我正在处理的一个应用程序有几个URL和其他特定于实例的信息。第一遍使用典型的Spring PropertyPlaceholderConfigurer 和属性文件:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:application.properties"/>
</bean>
这个问题的主要问题当然是属性文件是必须签入的工件,并且要启动新实例需要更新该工件。对于简化部署,我希望基于数据库表具有ApplicationContext引导程序。我见过像this forum post这样的解决方案,这里有没有人知道更好的工具,还是这种解决这个问题的方法?我还希望能够在运行时使用JMX或其他工具更新/重新加载设置,但是在更改数据库之后必须重新启动应用程序仍然是当前更好的解决方案。
答案 0 :(得分:0)
我们这样做的方法是在环境中放置一些配置信息,然后从那里提取相关信息。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="searchSystemEnvironment" value="true" />
</bean>
如果配置更改,则需要重新启动应用程序。也可以将所有不同的配置放入环境中并嵌套变量,如下所示:
<bean id="db" class="org.DataSource"
p:databaseServer="${${MODE}_DBSERVER}"
p:databaseName="${${MODE}_DBNAME}" />
其中$ MODE = dev,qa等。