2011-03-10 74 views
1

我正在处理的一个应用程序有几个URL和其他特定于实例的信息。第一遍使用典型的Spring PropertyPlaceholderConfigurer一个属性文件:使用java.util.prefs或Commons配置的Spring配置的好例子

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:application.properties"/> 
</bean> 

与此的主要问题是当然的属性文件是必须要检验的假象,并开始一个新的实例将要求更新该工件。为了简化部署,我希望ApplicationContext基于数据库表进行引导。我见过像this forum post这样的解决方案,有没有人在这里知道更好的工具,或者这种事实上的方法来解决这个问题?我还希望能够使用JMX或其他工具在运行时更新/重新加载设置,但在更改数据库之后必须重新启动应用程序仍然是当前更好的解决方案。

+0

+1:我也试图这样做这在我的应用程序。虽然我有一个解决方案,这是巨大和复杂的,*非常不雅,所以我很想看看是否有更好的方法。 – 2011-03-11 09:18:36

+0

我发现[this](http://stackoverflow.com/questions/4599252/how-to-configure-a-spring-beans-with-properties-that-are-stored-in-a-database-tab/4601913 #4601913)发布者@ sean-patrick-floyd在配置中使用它仍然给我留下了一个鸡蛋问题,即在同一个ApplicationContext中从数据库的文件和其他属性加载数据库属性。 – Greymeister 2011-03-11 14:17:32

回答

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 =开发,QA等