背景: 现有2个配置文件 applicationContext.xml 和 database.properties
database.properties 中设置了数据库 连接的参数。 里面的值被 Spring 配置文件 applicationContext.xml 引用。需求:前台修改 数据库连接参数。
Spring 动态的重新加载 数据库连接参数,动态的切换数据库。
修改 database.properties 文件很简单,但是让 Spring 去重新加载配置文件,怎么做呢??
database.properties 中设置了数据库 连接的参数。 里面的值被 Spring 配置文件 applicationContext.xml 引用。需求:前台修改 数据库连接参数。
Spring 动态的重新加载 数据库连接参数,动态的切换数据库。
修改 database.properties 文件很简单,但是让 Spring 去重新加载配置文件,怎么做呢??
Spring默认的bean的scope是单例的 所以你配置的数据源也是单例的,比如你是这样配置的:
Java代码
<bean id="dataSource" class="com.ykxd.context.ExBasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url"
value="jdbc:sqlserver://192.168.1.26;databaseName=aa" />
<property name="username" value="ykxdhr" />
<property name="password"
value="123" />
<property name="maxActive" value="100" />
<property name="validationQuery" value="select 1" />
</bean>
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg>
<ref local="dataSource" />
</constructor-arg>
</bean> 如果想在运行时修改 就直接获取dataSource这个bean修改连接属性就行了,比如:
Java代码
WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
BasicDataSource ds = (BasicDataSource) applicationContext.getBean("dataSource");
ds.setUrl("jdbc:sqlserver://192.168.1.26;databaseName=bb");
ds.setPassword("1111");