我有一个用于所有项目的bean(不同的war文件)。 该特定bean需要属性appname(以了解哪个应用程序正在使用该bean)。 我该如何配置?
我尝试按以下方式传递值:
ResizeMode="CanResize"
Bean定义:
<bean id="appNameProperty" class="java.util.Properties">
<property name="appName" value="app1" />
</bean>
其中appName应该是String值。 部署我的应用时出现以下异常:
<bean id="someClass" class="someClass">
<property name="appName" value="#{appNameProperty.appName}" />
</bean>
答案 0 :(得分:1)
要避免使用VM参数,可以使用上面提到的属性占位符配置器。如果每个应用程序的应用程序名称都是固定的,并且您在任何地方使用war文件,则可以添加例如“/ WEB-INF / config”到属性列表的位置,并在那里放置一个包含app-name的属性文件:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- further locations -->
<value>WEB-INF/config/*.properties</value>
<!-- further locations -->
</list>
</property>
<!-- further configuration as needed -->
</bean>
答案 1 :(得分:0)
这可能会对你有帮助。
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="searchSystemEnvironment" value="true" />
</bean>
<bean id="yourBean" class="path.to.your.BeanClass">
<property name="appName" value="#{systemProperties['appName']}"/>
</bean>
您需要做的就是在启动应用程序时传递VM arguement -DappName = abcApp。