@MapperScan-->@Import(MapperScannerRegistrar.class)
BeanDefinitionBuilder.genericBeanDefinition(MapperScannerConfigurer.class);
- 注册MapperScannerConfigurer ;
- new ClassPathMapperScanner ,
- ClassPathMapperScanner 重写了父类doScan里的isCandidateComponent使得接口可以被扫描;
isCandidateComponent是 在父类ClassPathBeanDefinitionScanner.doScan->findCandidateComponents(basePackage)->canCandidateComponents(basePackage);被调用
- 接着调用processBeanDefinitions进行偷天换日,可以实例化mapper (实现类的逻辑在MapperFactoryBean的getObject方法中)