¿Es posible utilizar los archivos .properties en web.xml junto con el parámetro contextConfigLocation?
-
22-09-2019 - |
Pregunta
Aquí es parte de mi web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:application-config.xml
</param-value>
</context-param>
-config.xml aplicación utiliza la propiedad de marcador de posición:
<context:property-placeholder location="classpath:properties/db.properties"/>
¿Es posible de alguna manera a definir qué archivo de propiedades para su uso en web.xml en lugar de en la solicitud-config.xml?
Solución
Sí, puede utilizar ServletContextParameterFactoryBean
para exponer valor context-param
(que también requiere de forma completa en lugar de PropertyPlaceholderConfigurer
context:property-placeholder
sencilla):
<bean id = "myLocation" class =
"org.springframework.web.context.support.ServletContextParameterFactoryBean">
<property name="initParamName" value = "myParameter" />
</bean>
<bean class =
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" ref = "myLocation" />
</bean>
o usar un muelle de 3.0 EL:
<bean class =
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value = "#{contextParameters.myParameter}" />
</bean>
Otros consejos
Totalmente de acuerdo con axtavt. Así que toda la información se combina la solución más sencilla con Spring 3.0 por tanto, es:
<context:property-placeholder location="#{contextParameters.propertiesLocation}"/>
con
<context-param>
<param-name>propertiesLocation</param-name>
<param-value>classpath:properties/db.properties</param-value>
</context-param>
en web.xml.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow