【随记】MyBatis中的@Mapper接口的加载原理_spring boot

  最近有小伙伴问到MyBatis中的@Mapper接口的加载原理,头脑里面首先想到的是​​代理模式​​,但是具体的加载过程想不出来,于是就翻了下源码,顺便记录分享给大家。

@Mapper接口

  首先我们要清楚Mapper接口的作用,这里需要和@MapperScan一块来了解。在整合SpringBoot项目的时候,我们可以通过@MapperScan来指定我们存放Mapper接口的包,启动的时候就会去对应的目录下去扫描这个包下的接口,而@Mapper接口是更细粒度的直接修饰在Mapper接口的头部。比如:

【随记】MyBatis中的@Mapper接口的加载原理_mybatis_02

  然后@Mapper是在MyBatis中就提供的,但是在MyBatis中并没有应用到。

【随记】MyBatis中的@Mapper接口的加载原理_mybatis_03

@Mapper接口加载

  @Mapper接口是在MyBatis整合到SpringBoot项目中时会提供对应的加载。在提供的自动配置类​​MybatisAutoConfiguration​

【随记】MyBatis中的@Mapper接口的加载原理_加载_04

中就有我们需要的答案。

【随记】MyBatis中的@Mapper接口的加载原理_spring boot_05

通过代码也能很清楚的看到操作的流程。