Tengo una aplicación donde se utiliza un marcador de posición propiedad para leer las propiedades, configurado en applicationContext.xml
:Añadir propiedades de marcador de posición propiedad
...
<context:property-placeholder
location="classpath*:META-INF/spring/*.properties"/>
...
La aplicación se ejecuta en un Tomcat y utiliza el parámetro definido en context.xml. La aplicación accede a este parámetro como propiedades normales (@Value(${cfma.applicationUrl})
). Esto funciona
En mis casos de prueba, no tengo estas propiedades de tomcat, por lo que quiero agregarlas "manualmente" al contexto de la aplicación. Pero también cargar la normalidad applicationContext.xml
testContext.xml:
<import resource="classpath:/META-INF/spring/applicationContext.xml" />
<context:property-placeholder properties-ref="simulatedTomcatProperties"/>
<util:properties id="simulatedTomcatProperties">
<prop key="cfmt.applicationBaseUrl">localhost:8080/cfmt</prop>
</util:properties>
Ahora tengo dos contexto: la propiedad del marcador de posición y esto no funciona (por supuesto) - Así que mi pregunta es, que puedo extender las propiedades en la propiedad "normal"-marcador de posición en mi prueba?
Más explicación de lo que necesito:
- el entorno productivo (así como el entorno de desarrollo) define algunas propiedades mediante el parámetro Tomcat. Por lo tanto, no están incluidos en ningún archivo de propiedades, pero pueden acceder a ellos como propiedades normales (
@Value(${cfma.applicationUrl})
). Además, no debe haber ninguna Devolución, si las propiedades no están definidas en el Tomcat, ¡la aplicación no debe comenzar! - En los casos de prueba (que utilizan el contexto de primavera) Debo algunos cómo insertar la propiedad (cfma.applicationUrl) de modo que se puede inyectar en las variables anotadas. Pero si añado una segunda
context:property-placeholder
que no se fusionan:
@see Comentarios sobre https://jira.springsource.org/browse/SPR-4881 - explican ese comportamiento.
Cuando hablo de parámetro Tomcat que estoy hablando somethink así:
context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Parameter name="cfmt.applicationBaseUrl"
value="http://localhost/demoApp" override="false"/>
</Context>
Ver http://stackoverflow.com/questions/6375016/spring-properties-file-setting-default-values Es efectivamente le permite definir múltiples ubicaciones de propiedades. Los archivos de propiedades perdidas se ignoran y se carga el último archivo válido de la lista. – Fil
@Filip: Mi pregunta no es acerca de la ubicación múltiple. Me pegaron con múltiples configuradores de marcador de posición de propiedad. Y estoy buscando una forma de ampliar/cambiar la configuración del configurador de marcador de posición de propiedad de contexto de la aplicación "normal" desde mi test-context.xml – Ralph
Lo siento. Mi comentario no era muy claro, no sugería una forma de especificar múltiples archivos de propiedades, sino una forma de hacer búsquedas de propiedades condicionales. Una respuesta expandida está abajo. – Fil