我有独立的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应用程序中处理数据库设置的最佳方法是什么?
答案 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
读取道具的配置器beanclass 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;
}