2016-02-23 4 views
0

Je veux être en mesure de faire référence à des variables d'environnement dans web.xml, quelque chose le long des lignes de ce:Comment utiliser les variables d'environnement dans web.xml au printemps?

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>classpath:conf/log4j-${SERVER_ENVIRONMENT}.properties</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.util.Log4j2ConfigListener</listener-class> 
</listener> 
<param-value>classpath:conf/log4j-​${SERVER_ENVIRONMENT}​.properties</param-value> 

This question est semblable à la mienne, et la réponse la plus upvoted prétend que:

Si vous utilisez Spring, vous pouvez créer un bean, puis utiliser directement envvars ou sysprops dans les fichiers de configuration XML Spring.

Cependant, je ne comprends pas comment faire cela. J'ai ajouté ce haricot:

<context:property-placeholder /> 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="serverEnvironment" value="${SERVER_ENVIRONMENT}"></property> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
</bean> 

Mais je ne sais pas si je le fais à droite, ni comment accéder à cette variable de web.xml. Comment dois-je définir ce bean, et comment puis-je utiliser sa valeur dans web.xml?

Répondre

0

Si vous êtes prêt à renoncer à l'utilisation de la configuration XML en faveur de la configuration Java, il est assez facile de référencer les variables d'environnement. Juste Environnement @Autowire dans votre classe de configuration, alors vous pouvez faire quelque chose comme

@Autowired 
Environment environment; 

@Bean 
public String getServerEnvironment(){ 
    return this.environment.getProperty("SERVER_ENVIRONMENT"); 
} 

Ensuite, il suffit d'appeler votre haricot et vous avez terminé. Cela suppose que la propriété existe dans votre environnement ou que vous l'avez transmise avec -DSERVER_ENVIRONMENT à l'exécution. Ou vous pouvez simplement utiliser l'annotation @Profile de Spring et rendre votre environnement de journalisation dépendant de cela (plusieurs didacticiels également). Incidemment, Spring Boot rend ce processus encore plus facile.