spring 如何动态加载properties文件的内容。或是如何手动在web上重新初始化。
spring初始化,不同的方法花费的时间不同。求最快的方法。或是各种方法的详解。具体问题如下:(数据库方面的变动)SSH框架的Web项目已经启动(已经连接到jdbc.pr...
spring初始化,不同的方法花费的时间不同。 求最快的方法。或是各种方法的详解。
具体问题如下:(数据库方面的变动)
SSH框架的Web项目已经启动(已经连接到jdbc.properties配置的数据库:test1
1、变动:jdbc.properties中的key:jdbc.url的value变为:jdbc:mysql://127.0.0.1:3306/test2
2、说明:test2为空数据库(无任何表等)。
目的:连接到新的数据库(test2),利用重新加载applicationContext.xml自动创建数据表。(hibernate.hbm2ddl.auto=update)
3、已了解:重新启动tomcat可以实现,但晚上很多说法认为不要轻易重启服务器。所以想着能不能Spring自己内部解决。(不知道是否有可以利用的工具类)
4、期望:可以有spring的工具类,提供setApplicationContext(ApplicationContext appcxt)更换当前web的ApplicationContext实例。
先:setURL("url");
BasicDataSource bds = (BasicDataSource) appcxt.getBean("dataSource");
bds.setUrl("jdbc:mysql://127.0.0.1:3306/test2");
然后:appcxt.setDB(bds) ;
再:setApplicationContext(appxt)
就是想花费最小的时间代价,来达到预期。 展开
具体问题如下:(数据库方面的变动)
SSH框架的Web项目已经启动(已经连接到jdbc.properties配置的数据库:test1
1、变动:jdbc.properties中的key:jdbc.url的value变为:jdbc:mysql://127.0.0.1:3306/test2
2、说明:test2为空数据库(无任何表等)。
目的:连接到新的数据库(test2),利用重新加载applicationContext.xml自动创建数据表。(hibernate.hbm2ddl.auto=update)
3、已了解:重新启动tomcat可以实现,但晚上很多说法认为不要轻易重启服务器。所以想着能不能Spring自己内部解决。(不知道是否有可以利用的工具类)
4、期望:可以有spring的工具类,提供setApplicationContext(ApplicationContext appcxt)更换当前web的ApplicationContext实例。
先:setURL("url");
BasicDataSource bds = (BasicDataSource) appcxt.getBean("dataSource");
bds.setUrl("jdbc:mysql://127.0.0.1:3306/test2");
然后:appcxt.setDB(bds) ;
再:setApplicationContext(appxt)
就是想花费最小的时间代价,来达到预期。 展开
1个回答
展开全部
1. 在xml中配置你的properties路径:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<!-- 指定资源文件基名称 jdbc为文件名,不包含扩展名 -->
<value>classpath:resource/jdbc</value>
</list>
</property>
</bean>
2. 获取WebApplicationContext(需要入参HttpServletRequest request)
ServletContext servletContext = request.getSession()
.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(servletContext);
3. 通过WebApplicationContext获取中键值
String msg = ctx.getMessage("jdbc.url", null, Locale.CHINA);
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<!-- 指定资源文件基名称 jdbc为文件名,不包含扩展名 -->
<value>classpath:resource/jdbc</value>
</list>
</property>
</bean>
2. 获取WebApplicationContext(需要入参HttpServletRequest request)
ServletContext servletContext = request.getSession()
.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(servletContext);
3. 通过WebApplicationContext获取中键值
String msg = ctx.getMessage("jdbc.url", null, Locale.CHINA);
追问
1、如果jdbc.properties文件放在src根目录下,应写成classpath:jdbc
2. String msg = ctx.getMessage("jdbc.url", null, Locale.CHINA);
感谢提供了另外一种获取jdbc.properties里指定key的value的方法。
待解决问题是:
spring如何通过类似Redeploy/Reload application的操作,来自动创建表结构;又不用打开新页面(即:不用关闭当前页面,保留原页面的会话(session))。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询