最近有小伙伴问到MyBatis中的@Mapper接口的加载原理,头脑里面首先想到的是代理模式
,但是具体的加载过程想不出来,于是就翻了下源码,顺便记录分享给大家。
@Mapper接口
首先我们要清楚Mapper接口的作用,这里需要和@MapperScan一块来了解。在整合SpringBoot项目的时候,我们可以通过@MapperScan来指定我们存放Mapper接口的包,启动的时候就会去对应的目录下去扫描这个包下的接口,而@Mapper接口是更细粒度的直接修饰在Mapper接口的头部。比如:
然后@Mapper是在MyBatis中就提供的,但是在MyBatis中并没有应用到。
@Mapper接口加载
@Mapper接口是在MyBatis整合到SpringBoot项目中时会提供对应的加载。在提供的自动配置类MybatisAutoConfiguration
中就有我们需要的答案。
通过代码也能很清楚的看到操作的流程。