我们有类似的情况,我们需要同时运行同一个应用程序的多个版本。我们使用的解决方案是将属性文件与构建一起打包,并且没有动态元素(基于环境)。例如;在这种情况下,我们构建httpdemo.usa.properties并将其与应用程序一起打包。这对我们来说相当简单,因为我们使用Jenkins来管理我们的构建和发布。构建版本发布后,我们从Jenkins引用配置文件,其中包含所有特定的“国家/地区”相关属性。你甚至可以通过这个国家作为构建定义的参数。使用自定义maven插件,我们用Jenkins属性文件中的新属性替换应用程序中的属性文件。
你的问题的另一个解决方案可能是遵循一个命名约定到你想要使用的“country”的应用程序,并使用spring bean获取属性。例如;
<spring:beans>
<spring:bean id="CountryProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<spring:property name="singleton" value="true"/>
<spring:property name="location" value="${app.name}.properties"/>
</spring:bean>
</spring:beans>
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="5000" doc:name="HTTP Listener Configuration"/>
<flow name="dynamic_propsFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/>
<logger message="#[app.registry.CountryProperties['country.full.name']]" level="INFO" doc:name="Logger"/>
</flow>
我的属性是象下面这样:
File - dynamic_props_usa.properties
population=10
country.full.name=united.states.of.america
File - dynamic_props_mexico.properties
population=100
country.full.name=mexico
$ {} app.name给你所部署的应用程序的名称。如果我的应用名为dynamic_props_usa,则它指dynamic_props_usa.properties。如果是dynamic_props_mexico,则它指dynamic_props_mexico.properties。希望这可以帮助!
你给要么含有太多的引号的例子或者如果将它们添加到StackOverflow中,则引号太少。请使用代码格式编辑和修复它。 – techraf