Spring是如何整合Mybatis的
2021-03-31 11:26:48 1 举报
Spring是如何整合Mybatis的
作者其他创作
大纲/内容
当getBean的时候
接口扫描出来了,是不能实例化的,mybatis在下面这个方法将其bean定义改了
org.mybatis.spring.mapper.ClassPathMapperScanner继承ClassPathBeanDefinitionScanner重写了Spring的isCandidateComponent
当实例化UserMapper的时候
第2步sqlSessionTemplate拿Configuration
ClassPathBeanDefinitionScanner(scan)
至此在SqlSessionFactoryBean中就解析完了mybatis的配置文件,并且放入道configration对象中了
最后调用DefaultSqlSession
afterPropertiesSet
调用没有实现任何优先级接口的BeanDefinitionRegistryPostProcessor
new XMLConfigBuilder
invokeBeanFactoryPostProcessors
MapperScannerRegistrar
第一步拿到sqlSessionTemplate
把sqlSessionFactory赋值给SqlSessionTemplate
isCandidateComponent
最后拿到Mapper的代理对象
ClassPathMapperScanner
SqlSessionFactoryBean
注册MapperScannerConfigurer
实例化SqlSessionFactory
真正的解析我们的 <mapper namespace=\"com.tuling.mapper.EmployeeMapper\">
真正的解析我们的配置(mybatis-config.xml)的document对象xmlConfigBuilder.parse();
definition.setBeanClass(this.mapperFactoryBeanClass);
processBeanDefinitions(beanDefinitions);
属性赋值
当执行crud的时候就调用sqlSessionTemplate的
依赖于sqlSessionFactory
MapperScannerConfigurer(postProcessBeanDefinitionRegistry)
MapperFactoryBean的getObject()
sqlSessionFactory实例化后在初始化方法中
0 条评论
下一页