Springboot

Mybatis自动刷新XML

2020-12-17  本文已影响0人  孤山之王

使用Mybatis过程中,很多时候修改了XML文件需要整个项目重新启动,比较耗时,如果没什么业务数据状态还好,有数据状态可就惨啦,所以XML自动线下更新就很有必要。手写一个简单实现,大家参考下。

我的实现思路就是利用一个额外线程扫描mybatis XML文件,更新到 Spring中的 上下文ApplicationContext中。

mybatis

1. 配置文件

我们定义一套刷新时间和周期频次的配置文件在路径 persistence-mybatis\mybatis-base\src\main\resources\conf\mybatis-refresh.properties 中,里面内容如下:

enabled=true
delaySeconds=30
sleepSeconds=10
mappingPath=mapper

核心类需要实现上下文接口 ApplicationContextAware

2. 关键步骤

关键性步骤如下:

// 1、从上下文容器获取 SqlSessionFactory
SqlSessionFactory sessionFactory = applicationContext.getBean(SqlSessionFactory.class);
// 2、获取Configuration
Configuration configuration = sessionFactory.getConfiguration();
this.configuration = configuration;
// 3、扫描Locations
mapperLocations = getResource(basePackage,XML_RESOURCE_PATTERN);
// 4、启动线程执行
exeTask();

核心类在akkad-base\persistence-mybatis\mybatis-base\src\main\java\xyz\wongs\drunkard\base\persistence\mybatis\loader\MapperAutoRefresh.java 下,而且行数太长,代码就不贴。

在多线程处理这块有需要注意有一定的线程使用基础,看官自行学习。

3. 源码地址,如果觉得对你有帮助,请Star

觉得对你有帮助,请Star

Github源码地址

Gitee源码地址

上一篇 下一篇

猜你喜欢

热点阅读