我有一个关于尝试将环境变量注入我的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)中,我还有如上所示定义的控制器。我的理解是,春天足够聪明,能够处理这个问题。我已经列出了这些信息,以防这可能是问题的原因。
感谢
答案 0 :(得分:1)
此外,BeanFactoryPostProcessors的范围是每个容器。这仅在您使用容器层次结构时才有意义。如果在一个容器中定义BeanFactoryPostProcessor,它将仅应用于该容器中的bean定义。 BeanFactoryPostProcessors在另一个容器中不会对一个容器中的Bean定义进行后处理,即使两个容器都属于同一层次结构。
因此,您需要在PropertyPlaceholderConfigurer
文件中-servlet.xml
才能使其正常运行。