Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java.util.prefs或Commons配置的Spring配置的好例子_Spring_Apache Commons_Apache Commons Config - Fatal编程技术网

使用java.util.prefs或Commons配置的Spring配置的好例子

使用java.util.prefs或Commons配置的Spring配置的好例子,spring,apache-commons,apache-commons-config,Spring,Apache Commons,Apache Commons Config,我正在处理的一个应用程序有几个URL和其他特定于实例的信息。第一个过程使用典型的Spring PropertyPlaceHolderConfigure和属性文件: <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:ap

我正在处理的一个应用程序有几个URL和其他特定于实例的信息。第一个过程使用典型的Spring PropertyPlaceHolderConfigure和属性文件:

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

这方面的主要问题当然是属性文件是一个必须签入的工件,并且启动一个新实例需要更新该工件。为了简化部署,我希望ApplicationContext引导本身基于数据库表。我见过这样的解决方案,这里有人知道更好的工具吗,或者这是解决这个问题的实际方法吗?我还希望能够在运行时使用JMX或其他工具更新/重新加载设置,但在数据库更改后重新启动应用程序仍然是当前应用程序的更好解决方案。

我们这样做的方式是在环境中放置一些配置信息,然后从中提取相关信息

<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等。

+1:我也在尝试在我的应用程序中执行类似的操作。虽然我有办法解决这个问题,它庞大而复杂,非常不雅观,所以我很想看看是否有更好的方法。我发现@sean patrick floyd在配置中使用它的帖子仍然给我留下了一个鸡蛋问题,即在同一应用程序上下文中从文件加载数据库属性和从数据库加载其他属性。