春天试图加载环境变量

时间:2014-06-18 06:00:25

标签: spring spring-mvc

我有一个关于尝试将环境变量注入我的spring mvc控制器的问题。

我有一个环境变量如下......

POS_MANAGER_SERVER_REPORTING = MYSERVER

在我的春季申请环境中,我有......

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    p:systemPropertiesModeName="SYSTEM_PROPERTIES_MODE_OVERRIDE"
    p:searchSystemEnvironment="true"/>

<bean name="posManagerController"
    class="com.mycompany.reporting.controller.PosManagerController"
    p:posManagerServer="${POS_MANAGER_SERVER_REPORTING}" />     

当我没有在websphere中定义系统变量时,应用程序无法正常启动。当我添加变量时。但由于某种原因,注入我的控制器的值为空。

有人可以帮我解决这里可能出现的问题吗?即为什么环境变量未正确加载?

为了给你提供更多信息,使用@Controller注释在子上下文(-servlet.xml)中加载Controller,但是在父上下文(applicationContext.xml)中,我还有如上所示定义的控制器。我的理解是,春天足够聪明,能够处理这个问题。我已经列出了这些信息,以防这可能是问题的原因。

感谢

1 个答案:

答案 0 :(得分:1)

引自documentation

  

此外,BeanFactoryPostProcessors的范围是每个容器。这仅在您使用容器层次结构时才有意义。如果在一个容器中定义BeanFactoryPostProcessor,它将仅应用于该容器中的bean定义。 BeanFactoryPostProcessors在另一个容器中不会对一个容器中的Bean定义进行后处理,即使两个容器都属于同一层次结构。

因此,您需要在PropertyPlaceholderConfigurer文件中-servlet.xml才能使其正常运行。