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加载就暂时告一段落。