节前最后一篇文章,祝大家国庆快乐
本文是 mybatis-xmlreload 项目最新 3.0.5.m3 版本的更新介绍以及使用文档,本文内容大纲如下:
简介 3.0.5.m3 版本更新内容 原理 安装 使用配置 使用交流
简介
自博主从事开发工作使用 Mybatis 以来,如果需要修改 xml 文件的内容,通常都需要重启项目,因为不重启的话,修改是不生效的,Mybatis 仅仅会在项目初始化的时候将 xml 文件加载进内存。
本着提升开发效率且网上没有能够直接使用的轮子初衷,博主就自己开发了 mybatis-xmlreload-spring-boot-starter 这个项目。它能够帮助我们在 Spring Boot + Mybatis 的开发环境中修改 xml 后,不需要重启项目就能让修改过后 xml 文件立即生效,实现热加载功能。对于一些需要在本地或者生产环境实现 mybatis xml 文件热加载的功能,那么可以引入接这个项目解决问题。
项目地址
https://github.com/wayn111/mybatis-xmlreload-spring-boot-starter 欢迎大家关注,点个 star
分支说明
| 分支名称 | Spring Boot 版本 | Mybatis Xmlreload 版本 |
|---|---|---|
| main | 3.0.4 | 3.0.5.m3 |
| springboot2 | 2.2.7.RELEASE | 2.0.5.m3 |
3.0.5.m3 版本更新内容
修复项目开启全局懒加载时, MybatisXmlReloadConfiguration类未生效的问题。修复生产环境修改 xml 文件时,爆出 Mapped Statements collection does not contain value ...异常的问题。
原理
修改 xml 文件的加载逻辑。在普通的 mybatis-spring项目中,默认只会加载项目编译过后的 xml 文件,也就是 target 目录下的 xml 文件。但是在mybatis-xmlreload-spring-boot-starter中,修改了这一点,它会加载 Maven 项目中 resources 、 java 目录下的 xml 文件或者是本地指定目录下的 xml 文件,这样用户对于 xml 文件的修改操作可以立即触发热加载。通过 io.methvin.directory-watcher项目来监听 xml 文件的修改操作,它底层是通过java.nio的WatchService来实现,当我们监听了整个resources目录后,xml 文件的修改会立马触发 MODIFY 事件。通过 mybatis-spring项目原生的xmlMapperBuilder.parse()方法重新加载解析修改过后的 xml 文件,以此保证项目对于 Mybatis 的兼容性处理。
兼容
在 Spring Boot项目中,兼容mybatis-spring-boot-starter2.0 以上版本。兼容 mybatis plus33.0 以上版本。
安装
在 Spring Boot3.0 项目中,提供坐标地址如下:
<dependency>
<groupId>io.github.wayn111</groupId>
<artifactId>mybatis-xmlreload-spring-boot-starter</artifactId>
<version>3.0.5.m3</version>
</dependency>
在 Spring Boot2.0 项目中,提供坐标地址如下:
<dependency>
<groupId>io.github.wayn111</groupId>
<artifactId>mybatis-xmlreload-spring-boot-starter</artifactId>
<version>2.0.5.m3</version>
</dependency>
使用配置
mybatis-xmlreload-spring-boot-starter 目前只有两个配置属性。
mybatis-xml-reload.enabled默认是 false, 也就是不启用 xml 文件的热加载功能,想要开启的话通过在项目配置文件中设置mybatis-xml-reload.enabled为 true。mybatis-xml-reload.mapper-locations需要热加载的 xml 文件路径,这个属性需要手动填写,跟项目中的mybatis.mapper-locations保持一致即可。如果是多数据源配置,这里可以用逗号分割填写多个路径。也可以直接设置 xml 文件所在目录的绝对路径,例如file:/E:/GitRepo/newbeemall-pro/src/main/resources/mapper/*.xml指向的就是本地目录下 xml 文件的绝对路径。
# mybatis xml文件热加载配置
mybatis-xml-reload:
# 是否开启 xml 热更新,true开启,false不开启,默认为false
enabled: true
# xml文件路径,可以填写多个,逗号分隔。如果想将xml文件放在指定目录而不是jar包内,可以用file前缀指定本地目录,例如 file:/c/mapper/*.xml
# eg: `classpath:mapper/**/*Mapper.xml,file:/c/mapper/*.xml`
mapper-locations: classpath:mapper/*Mapper.xml
学习交流
如果有任何问题,欢迎在 Github 上提交 Issue,方便互相交流反馈~ 💘。最后喜欢的话麻烦给我个 star。
最后
明天就是国庆假期的第一天了,祝大家国庆快乐,玩的开心!😋🎇🎆🧨
·END·
因公众号更改推送规则,关注公众号主页点击右上角"设为星标"第一时间获取博主精彩技术干货
往期原创热门文章推荐: