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