0

我的其余客户将系统属性设置service.mode为 prod 或 uat 或 dev。基于此属性,dev.properties,prod.properties,uat.properties应加载文件的相应属性。此属性将由 spring 的 applicationContext.xml 定义的不同服务 bean 使用。

根据系统属性加载适当属性的最佳方法是什么service.mode

4

2 回答 2

0

使用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

于 2013-10-08T11:42:22.997 回答
0

最好的方法是在你的 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

于 2013-10-08T10:21:10.707 回答