Mybatis-Spring原理分析 -- @MapperScacn
2021-06-27 10:57:13 24 举报
Mybatis-Spring原理分析 -- @MapperScacn
作者其他创作
大纲/内容
ClassPathMapperScanner
scan() : 扫描mapper接口方法
getObject()->getSqlSession()
加载mapper层接口BeanDefinition对象到Spring容器中
doScan() : 扫描mapper接口方法
ClassPathBeanDefinitionScanner
newInstance(sqlSession)获取MapperProxy实例
this.sqlSessionTemplate
实现了BeanDefinitionRegistryPostProcessor接口Spring扩展点之一,自动回调postProcessBeanDefinitionRegistry()方法=>执行后置处理
getMapper( )
根据接口全限定名获取工厂类实例
返回:Set<BeanDefinitionHolder>
MapperRegistry
SqlSessionDaoSupport
返回代理对象
MapperProxyFactory
Configuration
MapperFactoryBean
MapperScannerRegistrar
返回MapperProxy实例
MapperFactoryBean类通过getObject()方法调用Mybaits获取代理对象
MapperProxy
@Import(MapperScannerRegistrar.class)
1、实现了ImportBeanDefinitionRegistrar接口Spring扩展点之一,自动回调registerBeanDefinitions()方法=>自定义BeanDefinition注册2、通过建造者模式创建MapperScannerConfigurer的BeanDefinition对象,注册到Spring容器中
@MapperScans
MapperScannerConfigurer
通过JDK动态代理生成代理对象
processBeanDefinitions方法后置处理修改BeanDefinition的beanClass为MapperFactoryBean.class
0 条评论
下一页