Spring - 来自 XML 的 Mybatis 重新加载片段

Spring - Mybatis reload fragment from XML

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

当我在 XML mapper 文件中更改 sql statementAppServer (Tomcat 8) 是 运行 时,更新后的 SQL 是否被框架执行。

<select ... >

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

<sql ... >

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

我找到了一种方法...

在我的 AppConfig 中,我将提供 SqlSessionFactory 的 bean 的范围限定为 prototype 范围 - 然后它在每个请求上重新创建 bean,并且缓存被破坏。这当然是非常低效的;但在您处理 SQL 片段时,它在 Developer PC 上是一个很好的解决方法:

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

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