Spring 整合 mybatis
2022-08-01 23:41:32 0 举报
AI智能生成
Spring 整合 mybatis
作者其他创作
大纲/内容
Mybatis-Spring 1.3.2
在配置类上使用 @MapperScan("com.zth.debugSpring")
导入 MapperScannerRegistrar
导入 MapperScannerRegistrar
MapperScannerRegistrar 实现了 ImportBeanDefinitionRegistrar
所以 Spring 启动时会调用 registerBeanDefinitions()
所以 Spring 启动时会调用 registerBeanDefinitions()
构造扫描器 ClassPathMapperScanner
继承自 Spring 的 ClassPathBeanDefinitionScanner
继承自 Spring 的 ClassPathBeanDefinitionScanner
ClassPathMapperScanner 重写了 isCandidateComponent
让接口成为 component
让接口成为 component
处理 @MapperScan 的属性
注册扫描器的过滤器
让所有 .class 都可以扫描到(Spring 默认是 @Component 注解了的 .class)
让所有 .class 都可以扫描到(Spring 默认是 @Component 注解了的 .class)
扫描指定路径
调用父类 doScan 得到 BeanDefinition
修改 beanDefinition
设置 BeanDefinition 的 BeanClass 为 MapperFactoryBean
指定 MapperFactoryBean 的构造方法参数为当前接口类
设置 BeanDefinition 的属性
sqlSessionFactoryBeanName、sqlSessionTemplateBeanName
sqlSessionFactoryBeanName、sqlSessionTemplateBeanName
设置 AutowireMode修改为byType
为了注入 SqlSession
(在父类中,实际被包装为 SqlSessionTemplate)
(在父类中,实际被包装为 SqlSessionTemplate)
Mybatis-Spring 2.0.6
@MapperScan 导入了 MapperScannerRegistrar
MapperScannerRegistrar 实现了 ImportBeanDefinitionRegistrar
Spring 启动时会调用 registerBeanDefinitions()
Spring 启动时会调用 registerBeanDefinitions()
在 registerBeanDefinitions 方法中注册一个 MapperScannerConfigurer 类型的 BeanDefinition
MapperScannerConfigurer 实现了 BeanDefinitionRegistryPostProcessor 接口,所以 Spring 在启动过程中时会调用它的 postProcessBeanDefinitionRegistry() 方法
MapperScannerConfigurer 实现了 BeanDefinitionRegistryPostProcessor 接口,所以 Spring 在启动过程中时会调用它的 postProcessBeanDefinitionRegistry() 方法
生成一个 ClassPathMapperScanner 对象,然后进行扫描
(扫描过程和1.3.2一致)
(扫描过程和1.3.2一致)
0 条评论
下一页