【问题标题】:Good example of Spring Configuration using java.util.prefs or Commons Configuration使用 java.util.prefs 或 Commons Configuration 的 Spring Configuration 的好例子
【发布时间】:2011-07-12 22:32:00
【问题描述】:

我正在处理的一个应用程序有多个 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 或其他工具更新/重新加载设置,但在更改数据库后必须重新启动应用程序仍然是当前解决方案的更好解决方案。

【问题讨论】:

  • +1:我也在尝试在我的应用程序中做这样的事情。虽然我对此有一个解决方案,但它庞大而复杂且非常不优雅,所以我很想看看是否有更好的方法。
  • 我发现 @sean-patrick-floyd 的 this Post 在配置中使用它仍然给我留下了一个鸡蛋问题,即从文件中加载数据库属性和从数据库中的其他属性相同的 ApplicationContext。

标签: spring apache-commons apache-commons-config


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多