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