Spring 运行时动态加载修改过的 配置文件。

yixunchenhua 2011-12-08 10:38:07
背景: 现有2个配置文件 applicationContext.xml 和 database.properties
database.properties 中设置了数据库 连接的参数。 里面的值被 Spring 配置文件 applicationContext.xml 引用。

需求:前台修改 数据库连接参数。
Spring 动态的重新加载 数据库连接参数,动态的切换数据库。



修改 database.properties 文件很简单,但是让 Spring 去重新加载配置文件,怎么做呢??



...全文
654 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吸尘器 2011-12-08
  • 打赏
  • 举报
回复
你这个是动态切换数据源,你想通过动态修改配置文件,让系统自动更新数据源,我感觉是不可能的!我的建议是,你直接配置好两个数据源,启动的时候两个数据源都创建好,然后通过代码切换连接数据源
yixunchenhua 2011-12-08
  • 打赏
  • 举报
回复
自己顶起来。。。。
yixunchenhua 2011-12-08
  • 打赏
  • 举报
回复
你说的应该是WEB应用吧
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");
yixunchenhua 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenxinhui741 的回复:]

你这个是动态切换数据源,你想通过动态修改配置文件,让系统自动更新数据源,我感觉是不可能的!我的建议是,你直接配置好两个数据源,启动的时候两个数据源都创建好,然后通过代码切换连接数据源
[/Quote]

但是需求是 前台 让 用户自己填写。。。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧