整合Mybatis关键点
2021-11-01 本文已影响0人
Depro
有两种方式
- xml方式
- 注解方式
- xml是把配置写到xml文件里,由 ClassPathXmlApplicationContext来加载;注解是另一个有@Configuration的配置类加载配置。原理都是把MapperScan的basePackage扫描成BeanDefinition,然后放到spring容器BeanDefintionMap中。最后修改BeanDefinition,把class修改为MapperFactoryBean,在最后生成bean的时候是生成 MapperProxy代理。
注解方法关键点
- 两种方式:@MapperScan方式和加一个@bean MapperScannerConfigurer
- @MapperScan()方式是通过@Import()一个ImportBeanDefinitionRegistrar,通过registerBeanDefinition()方法,生成一个ClassPathMapperScanner对象,来扫描加载BeanDefintion和生成 MapperFactoryBean,MapperProxy
- MapperScannerConfigurer类,继承了BeanDefinitionRegistryPostProcessor extend BeanFactoryPostProcessor; BeanFactoryPostProcessor是专门来维护修改BeanDefinition的。在postProcessBeanDefinitionRegistry()方法里,也是直接通过ClassPathMapperScanner对象生成BeanDefinition,MapperFactoryBean,MapperProxy,和第一种方式一样