1、自动刷新MybatisXM.md 2020/12/30 1 / 2 1. 自动刷新MybatisXML 1.1. 配置文件 1.2. 关键步骤 1.3. 源码地址,如果觉得对你有帮助,请Star 1. 自动刷新MybatisXML 使用Mybatis过程中,很多时候修改了XML文件需要整个项目重新启动,比较耗时,如果没什么业务数据状态还 好,有数据状态可就惨啦,所以XML自动线下更新就很有必要。手写一个简单实现,大家参考下。 我的实现思路就是利用一个额外线程扫描mybatis XML文件,更新到 Spring中的 上下文 ApplicationContext中。 1.1. 配置文件 我们定义一
2、套刷新时间和周期频次的配置文件在路径 persistence-mybatismybatis- basesrcmainresourcesconfmybatis-refresh.properties 中,里面内容如下: enabled=true delaySeconds=30 sleepSeconds=10 mappingPath=mapper enabled:是否开启自动刷新 delaySeconds: 间隔时间 sleepSeconds: 休眠时间 mappingPath:XML的路径 核心类需要实现上下文接口 ApplicationContextAware。 1.2. 关键步骤 Overri
3、de重写setApplicationContext 方法 用静态语句块,初始化配置文件中的相关参数 PostConstruct:在构造函数之后对SqlSessionFactory进行额外配置 启用线程按照频次间隔重复执行上述操作 关键性步骤如下: / 1、从上下文容器获取 SqlSessionFactory SqlSessionFactory sessionFactory = applicationContext.getBean(SqlSessionFactory.class); / 2、获取Configuration Configuration configuration = session
4、Factory.getConfiguration(); this.configuration = configuration; / 3、扫描Locations mapperLocations = getResource(basePackage,XML_RESOURCE_PATTERN); 自动刷新MybatisXM.md 2020/12/30 2 / 2 / 4、启动线程执行 exeTask(); 核心类在akkad-basepersistence-mybatismybatis- basesrcmainjavaxyzwongsdrunkardbasepersistencemybatisloaderMapperAutoRefresh. java 下,而且行数太长,代码就不贴。 在多线程处理这块有需要注意有一定的线程使用基础,看官自行学习。 1.3. 源码地址,如果觉得对你有帮助,请Star Github源码地址 Gitee源码地址