通用 Mapper 4.0.3 已发布,该版本从根本上解决了通用 Mapper 对 devtools 的支持。
但是 https://github.com/abel533/mapper-cast-exception 中列举的特殊情况在目前都不支持(mybatis也支持不了)。
其他 Spring Boot 类的项目如果想要完美支持 devtools,可以参考本项目的实现。
实现思路很简单,就是在 devtools 重启时,把所有和 Class 有关的缓存全部清空即可。
参考代码:
https://gitee.com/free/Mapper/blob/master/spring-boot-starter/mapper-spring-boot-autoconfigure/src/main/java/tk/mybatis/mapper/autoconfigure/MapperCacheDisabler.java
配置代码:
https://gitee.com/free/Mapper/blob/master/spring-boot-starter/mapper-spring-boot-autoconfigure/src/main/java/tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.java
具体配置代码如下:
/** * Support Devtools Restart. */ @org.springframework.context.annotation.Configuration @ConditionalOnProperty(prefix = "spring.devtools.restart", name = "enabled", matchIfMissing = true) static class RestartConfiguration { @Bean public MapperCacheDisabler mapperCacheDisabler() { return new MapperCacheDisabler(); } }