【问题标题】:How to handle Spring application configuration?如何处理 Spring 应用程序配置?
【发布时间】:2014-05-07 11:34:10
【问题描述】:

我有独立的 Spring 应用程序,它的设置在 DMBS 中。我有一个想法,当应用程序启动并且应用程序从数据库读取自己的设置时,只使用一个代码(指定特定实例)。然后设置值用于在 applicationContext XML 文件中创建 bean,然后在 bean 本身中创建。

到目前为止(开发阶段)我使用了一个属性文件并以这种方式读取它:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:/taskproducer.properties</value>
            </list>
        </property>
    </bean>

在 Spring 应用程序中如何处理来自数据库的设置的最佳方法是什么?

【问题讨论】:

标签: java spring configuration


【解决方案1】:

你正朝着正确的方向前进。属性文件确实应该包含数据库配置属性。

如果您想更进一步,您可以拥有特定于配置文件的属性文件,例如特定于开发的配置和特定于生产的配置。

观看 this 视频,了解有关此主题的一些不错的说明。

编辑:如果我误解了,并且您想要一些有关如何使用这些属性设置数据库的指导,here 是 Spring XML 配置的示例,基于配置中的属性文件。

简短说明:例如,您可以像这样设置 DataSource:

   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${database.driverClassName}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.username}" />
        <property name="password" value="${database.password}" />
    </bean>

然后在您的属性文件中,您将定义以下属性:

database.url=http://localhost:3306/mydb
database.username=sa
database.password=

希望对你有帮助

【讨论】:

  • 虽然链接非常有用,但 IMO 这个答案并不能完全解决报告的问题。
  • 据我所知,他想要一些关于使用环境属性的一般指导。如果我误解了,我深表歉意。
  • 添加了配置数据库的示例。
【解决方案2】:

您可以创建一个从 DB 读取 props 的配置器 bean

class DbProperties extends java.util.Properties {
    DbProperties() {
        String v1 = ... // read prop from db
        setProperty("p1", "v1");
    }   
}

将其添加到 Spring 上下文

...
    <context:annotation-config />
    <bean id="c1" class="DbProperties" />
    <bean id="b1" class="B1"/>

    <!--  
    <context:property-placeholder location="taskproducer.properties" />
    -->
    <context:property-placeholder properties-ref="c1"/>

并使用它

class B1 {
    @Value("${p1}")
    int x;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2015-06-07
    • 2012-09-14
    • 2014-09-12
    相关资源
    最近更新 更多