我有一个使用JRebel(7)和Spring-Mybatis(1.3.1)的WebApp
当我在AppServer(Tomcat 8)运行时更改XML映射器文件中的sql statement
时,更新的SQL确实由框架执行。
<select ... >
如果我在XML文件中更改sql fragment
,则在我重新启动应用程序服务器之前,更改不会反映在执行的查询中。
<sql ... >
有没有办法通过配置或Java调用从文件重新加载Sql fragment
?
我找到了一种方法......
在我的AppConfig中,我将提供带有prototype
范围的SqlSessionFactory的bean作为范围 - 然后它在每个请求上重新创建bean,并且缓存被破坏。这当然是非常低效的;但是当你处理一个SQL片段时,它在Developer PC上是一个很好的解决方法:
@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public SqlSessionFactory sqlSessionFactory() throws Exception {
...
}