我的其余客户将系统属性设置service.mode
为 prod 或 uat 或 dev。基于此属性,dev.properties,prod.properties,uat.properties
应加载文件的相应属性。此属性将由 spring 的 applicationContext.xml 定义的不同服务 bean 使用。
根据系统属性加载适当属性的最佳方法是什么service.mode
?
使用PropertyPlaceholderConfigurer
如下
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>${service.mode}.properties</value>
</property>
</bean>
现在,当您启动其余客户端时,请确保service.mode
从提示符传递(例如-Dservice.mode=uat
)
编辑:
如果service.mode
未提供,则使用以下配置
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>${service.mode:prod}.properties</value>
</property>
</bean>
请注意提及属性的方式${service.mode:prod}
。这意味着如果service.mode
无法解决任何问题,那么将采用默认值 ie prod
。
注意:这仅适用于 SPRING 3.X
最好的方法是在你的 spring 配置文件中使用 PropertyPlaceholderConfigurer。像这样
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${service.mode}</value>
</property>
</bean>
然后你可以在你的 bean 中访问这些属性
<bean id="initSystemStatus" class="xxxx.xxxx.xxxx.InitSystemStatus">
<constructor-arg index="0" value="${application.context.instanceID:0001}" />
<constructor-arg index="1" value="${application.context.timeout:2000}"/>
</bean>
注意
如果属性文件中未提供该属性${application.context.instanceID:0001}
,则in0001
是默认值。application.context.instanceID