Spring - Mybatis 从 XML 重新加载片段



我有一个使用JRebel (7)Spring-Mybatis (1.3.1)的WebApp

当我在AppServer (Tomcat 8)运行时更改XML mapper文件中的sqlstatement时,框架确实会执行更新的SQL

<select ... >

如果我更改XML文件中的sqlfragment,则在重新启动应用程序服务器之前,更改不会反映在执行的查询中。

<sql ... >

有没有办法通过配置或Java调用从文件重新加载Sqlfragment

我找到了一种方法...

在我的 AppConfig 中,我限定了提供 SqlSessionFactory 的 Bean 的范围prototype然后它在每个请求上重新创建 Bean,并且缓存被破坏。 这当然是非常低效的;但是当您处理 SQL 片段时,这是开发人员 PC 上的一个漂亮的解决方法:

@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public SqlSessionFactory sqlSessionFactory() throws Exception {
...
}

HotswapAgent 现在有一个新的 MyBatis 插件 https://github.com/HotswapProjects/HotswapAgent,它可以处理 MyBatis 配置重新加载。

最新更新