E 'possibile utilizzare i file in web.xml .properties in combinazione con il parametro contextConfigLocation?
-
22-09-2019 - |
Domanda
Qui è parte della mia web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:application-config.xml
</param-value>
</context-param>
application-config.xml utilizza segnaposto proprietà:
<context:property-placeholder location="classpath:properties/db.properties"/>
E 'possibile in qualche modo definire quale file di immobili da utilizzare in web.xml piuttosto che in applicazione-config.xml?
Soluzione
Sì, è possibile utilizzare ServletContextParameterFactoryBean
per esporre il valore context-param
(richiede anche piena forma di PropertyPlaceholderConfigurer
invece di semplice context:property-placeholder
):
<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>
In alternativa, utilizzare Primavera 3.0 di EL:
<bean class =
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value = "#{contextParameters.myParameter}" />
</bean>
Altri suggerimenti
Totalmente d'accordo con axtavt. Quindi, tutte le informazioni combinate la soluzione più semplice, con molla 3.0 quindi è:
<context:property-placeholder location="#{contextParameters.propertiesLocation}"/>
con
<context-param>
<param-name>propertiesLocation</param-name>
<param-value>classpath:properties/db.properties</param-value>
</context-param>
in web.xml.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow