如何处理Spring应用程序配置?

时间:2014-05-07 11:34:10

标签: java spring configuration

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

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

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

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

2 个答案:

答案 0 :(得分: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=

希望这是有帮助的

答案 1 :(得分:0)

您可以创建一个从DB

读取道具的配置器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;
}