spring boot启动读取并初始化mybatis mapper

在Configuration类上我们一般会加上

@MapperScan(basePackages = "com.hunqingplatform.hunqing.dao.mapper1.ext",sqlSessionFactoryRef="sqlSessionFactory")这样的注解,点进该注解你会看到该注解又被@Import注解给注解了

@Import注解是往spring容器中导入一些bean实例的,作用和在类上加上@Componet注解差不多,这里向spring容器里加入了

MapperScannerRegistrar类。从名字就可以猜得到它是向spring里扫描注册mapper的。点进该类查看源码。发现该类实现了ImportBeanDefinitionRegistrar接口,看jdk doc说该接口的作用是注册额外的BeanDefinition在处理Configuration类的时候。在实现方法registerBeanDefinitions体内,new了一个ClassPathMapperScanner类用来扫描读取mapper接口,而ClassPathMapperScanner又继承ClassPathBeanDefinitionScanner实际是委托它的父类来扫描获取mapper的BeanDefinition。到这mapper的BeanDefiniton加载就暂时告一段落。

spring boot启动读取并初始化mybatis mapper