这篇文章主要介绍了mybatisxml文件热加载怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatisxml文件热加载怎么实现文章都会有所收获,下面我们一起来看看吧。在Spring Boot + Mybatis的常规项目中,通过 org.mybatis.spring.SqlSessionFactoryBean
这个类的 buildSqlSessionFactory()
方法完成对 xml 文件的加载逻辑,这个方法只会在自动配置类 MybatisAutoConfiguration
初始化操作时进行调用。这里把 buildSqlSessionFactory()
方法中 xml 解析核心部分进行展示如下:通过遍历 this.mapperLocations
数组(这个对象就是保存了编译后的所有 xml 文件)完成对所有 xml 文件的解析以及加载进内存。this.mapperLocations
解析逻辑在 MybatisProperties
类的 resolveMapperLocations()
方法中,它会解析 mybatis.mapperLocations
属性中的 xml 路径,将编译后的 xml 文件读取进 Resource
数组中。路径解析的核心逻辑在 PathMatchingResourcePatternResolver
类的 getResources(String locationPattern)
方法中。大家有兴趣可以自己研读一下,这里不多做介绍。通过 xmlMapperBuilder.parse()
方法解析 xml 文件各个节点,解析方法如下:简单来说,这个方法会解析 xml 文件中的 mapper|resultMap|cache|cache-ref|sql|select|insert|update|delete
等标签。将他们保存在 org.apache.ibatis.session.Configuration
类的对应属性中,如下展示:到这里,我们就知道了 Mybatis 对 xml 文件解析是通过 xmlMapperBuilder.parse()
方法完成并且只会在项目启动时加载 xml 文件。通过对上述 xml 解析逻辑进行分析,我们可以通过监听 xml 文件的修改,当监听到修改操作时,直接调用 xmlMapperBuilder.parse()
方法,将修改过后的 xml 文件进行重新解析,并替换内存中的对应属性以此完成热加载操作。这里也就引出了本文所讲的主角:mybatis-xmlreload-spring-boot-startermybatis-xmlreload-spring-boot-starter 这个项目完成了博主上述的实现思路,使用技术如下:修改 xml 文件的加载逻辑。在原用 mybatis-spring
中,只会加载项目编译过后的 xml 文件,也就是 target 目录下的 xml 文件。但是在mybatis-xmlreload-spring-boot-starter中,我修改了这一点,它会加载项目 resources 目录下的 xml 文件,这样对于 xml 文件的修改操作是可以立马触发热加载的。通过 io.methvin.directory-watcher
来监听 xml 文件的修改操作,它底层是通过 java.nio 的WatchService
来实现。兼容 Mybatis-plus3.0
,核心代码兼容了 Mybatis-plus
自定义的 com.baomidou.mybatisplus.core.MybatisConf免费云主机域名iguration
类,任然可以使用 xml 文件热加载功能。项目的结构如下:核心代码在 MybatisXmlReload
类中,代码展示:代码执行逻辑:解析配置文件指定的 xml 路径,获取 xml 文件在 target 目录下的位置根据 xml 文件在 target 目录下的位置,进行路径替换找到 xml 文件所在 resources 目录下的位置对 resources 目录的 xml 文件的修改操作进行监听对多个数据源进行遍历,判断修改过的 xml 文件属于那个数据源根据 Configuration 对象获取对应的标签属性遍历 resources 目录下 xml 文件列表判断是否是被修改过的 xml 文件,否则跳过解析被修改的 xml 文件,替换 Configuration 对象中的相对应属性重新加载和解析被修改的 xml 文件在 Spring Boot3.0
中,当前博主提供了mybatis-xmlreload-spring-boot-starter在 Maven 项目中的坐标地址如下在 Spring Boot2.0
Maven 项目中的坐标地址如下Maven 项目写入mybatis-xmlreload-spring-boot-starter坐标后即可使用本项目功能,默认是不启用 xml 文件的热加载功能,想要开启的话通过在项目配置文件中设置mybatis-xml-reload.enabled
为 true,并指定 mybatis-xml-reload.mapper-locations
属性,也就是 xml 文件位置即可启动。具体配置如下:关于“mybatisxml文件热加载怎么实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mybatisxml文件热加载怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。
这篇文章主要介绍“Python如何利用plotly绘制正二十面体”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何利用plotly绘制正二十面体”文章能帮助大家解决问题。正20面体的12个顶点刚好可以分为三…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。