MyBatis-Spring-Boot-Starter 2.0版本的变化.
(非常抱歉地說)我整理了2019年1月22日發布的2.0版本的變更點。
注意:由于2019/4已经发布了2.0.1版本,因此内容中也包含了2.0.1的更改。
在这次变更中,没有引入引人注目的大型功能增加或改进,因此该变更的亮点是它是第一个要求使用Spring Boot 2.x(Spring Framework 5.x)或更高版本的版本(尽管进行了一些细微的改进…)。
另外,
-
- mybatis-spring-boot-starterの使い方については、こちら(バージョン2.0対応済)
-
- mybatis-spring-boot-starter 1.2から1.3の変更点については、こちら
mybatis-spring-boot-starter 1.1から1.2の変更点については、こちら
mybatis-spring-boot-starter 1.0から1.1の変更点については、こちら
请随时根据需要进行调整。
注意:
对于Spring Boot 1.5.x(Spring Framework 4.3.x),维护工作将一直持续到版本1.3.x,但根据2019年8月的计划,Spring Boot 1.5.x将宣布终止支持,同时版本1.3.x的维护工作也将在同一时间结束(即计划在1.3.5版本发布后结束维护)。
依赖库的必需版本
如果使用2.0版本,则以下版本是必需的。
-
- MyBatis 3.5+
-
- Mybatis-Spring 2.0+
- Spring Boot 2.0+
Java的必需版本
如果使用2.0版本,将需要Java 8或更高版本。
更新依赖库的版本
在2.0版本中,以下库的版本已经更新。
注意:
与2.0.0版本同时发布的1.3.3版本已更新至Spring Boot 1.5.19.RELEASE,与2.0.1版本同时发布的1.3.4版本已更新至Spring Boot 1.5.20.
在配置属性中支持typeAliasesSuperType的指定
typeAliasesSuperType是Spring MyBatis提供的SqlSessionFactoryBean支持的选项。当从指定的包下进行扫描时,如果只想要扫描那些可以分配给指定的类或接口的类(即继承或实现了该类或接口的类),就可以使用这个选项来注册类型别名。
如果只需要注册实现了 com.example.data.Entity 接口的类作为类型别名,那么可以从指定的包下面选择
mybatis.type-aliases-package=com.example
mybatis.type-aliases-super-type=com.example.data.Entity
可以通过设定这个选项来实现。
只有当存在一个可注入的DataSource时,MyBatis的自动配置才会生效。
在1.3.x版本之前,在没有指定主要数据源的情况下,如果有多个DataSource被注册到DI容器中(即存在多个通过类型进行注入的DataSource候选项),则MyBatis的自动配置会出错。但是从2.0版本开始,MyBatis的自动配置将被禁用。这个变更是基于对Spring Boot提供的JdbcTemplate的自动配置等功能的反馈。
另外,关于对多个数据源的自动配置支持,请希望您能够创建一个问题(PR也非常欢迎!)作为功能添加请求。
应用spring-boot-autoconfigure-processor
spring-boot-autoconfigure-processor是一个用于在编译时预先读取Auto-Configure类的注解信息(Auto-Configure所需的元数据),并将其输出到属性文件中的工具,旨在减少在Spring Boot运行时从类中读取元数据的过程,从而加快应用程序的启动时间。
在1.3.x版本中,并没有使用该机制,但从2.0版本开始,我们改进了这个机制,将元数据输出到属性文件中。
支持指定基本包时的通配符功能
从版本2.0.1开始,在配置属性(mybatis.type-aliases-package和mybatis.type-handlers-package)中,可以使用通配符来指定要扫描的基础包。
详细来说…
# パッケージの深さを意識したワイルドカード指定
mybatis.type-handlers-package=com.example.*.typehandler
# パッケージの深さを意識しないワイルドカード指定
mybatis.type-handlers-package=com.example.**.typehandler
可以实现类似的指定。
注意:
由于MyBatis本身不支持通配符的指定,所以在MyBatis本身的配置文件(mybatis-config.xml)等中,无法指定包含通配符的基础包。
重要提示:
应用版本2.0.1后,已报告了“扫描类型别名时出现重复错误”的问题,无论是否使用通配符指定,因此在进行更新时需要注意。需要注意的是,并不是在所有情况下都会发生错误,已经发现当扫描目标包下存在以下条件的类或接口时,会出现重复错误:– 使用了多个无名对象
– 存在同名的接口、类或内部类该问题将在MyBatis Spring 2.0.2中修复(计划于2019年7月上旬发布),并计划在2019年7月上旬发布版本2.1.0以包含MyBatis Spring 2.0.2。另外,由于已宣布于2019年3月结束支持Spring Boot 2.0.x,并已经从GA目标中移除,没有计划将此问题回溯至版本2.0.x。为解决此问题,基本上建议更新至版本2.1.x。但是,如果确实无法升级到版本2.1.x,建议考虑单独应用MyBatis Spring 2.0.2来解决该问题。
在指定@MybatisTest时,不再需要指定@ExtendWith(SpringExtension.class)。
从2.0.1版本开始,在标有@MybatisTest的JUnit 5测试用例类中不再需要指定@ExtendWith(SpringExtension.class)。这是因为在@MybatisTest上加注@ExtendWith(SpringExtension.class),JUnit 5的测试框架引擎将从@MybatisTest指定的合成注解中读取信息。
此更改是对Spring Boot提供的@SpringBootTest等类似处理的反馈。
@MybatisTest
class MyMapperTest {
// ...
}
@ExtendWith(SpringExtension.class) // バージョン2.0.1以降ではこの指定は不要
@MybatisTest
class MyMapperTest {
// ...
}