我們有類似的情況,我們需要同時運行同一個應用程序的多個版本。我們使用的解決方案是將屬性文件與構建一起打包,並且沒有動態元素(基於環境)。例如;在這種情況下,我們構建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