E 'possibile utilizzare i file in web.xml .properties in combinazione con il parametro contextConfigLocation?

StackOverflow https://stackoverflow.com/questions/2515954

  •  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?

È stato utile?

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
scroll top