整合Mybatis关键点

有两种方式

  1. xml方式
  2. 注解方式
  3. xml是把配置写到xml文件里,由 ClassPathXmlApplicationContext来加载;注解是另一个有@Configuration的配置类加载配置。原理都是把MapperScan的basePackage扫描成BeanDefinition,然后放到spring容器BeanDefintionMap中。最后修改BeanDefinition,把class修改为MapperFactoryBean,在最后生成bean的时候是生成 MapperProxy代理。

注解方法关键点

  1. 两种方式:@MapperScan方式和加一个@bean MapperScannerConfigurer
  2. @MapperScan()方式是通过@Import()一个ImportBeanDefinitionRegistrar,通过registerBeanDefinition()方法,生成一个ClassPathMapperScanner对象,来扫描加载BeanDefintion和生成 MapperFactoryBean,MapperProxy
  3. MapperScannerConfigurer类,继承了BeanDefinitionRegistryPostProcessor extend BeanFactoryPostProcessor; BeanFactoryPostProcessor是专门来维护修改BeanDefinition的。在postProcessBeanDefinitionRegistry()方法里,也是直接通过ClassPathMapperScanner对象生成BeanDefinition,MapperFactoryBean,MapperProxy,和第一种方式一样

你可能感兴趣的:(整合Mybatis关键点)