mybatis设计7-适配spring

mybatis适配spring具体可以参考mybatis-spring-1.3.2.jar

该适配jar的类非常少,主要的入口也是从使用出发:

org.mybatis.spring.mapper.MapperScannerConfigurer 该类实现了多个扩展点:BeanDefinitionRegistryPostProcessor, InitializingBean, ApplicationContextAware, BeanNameAware

  • BeanDefinitionRegistryPostProcessor

其中的核心是在postProcessBeanDefinitionRegistry。该方法来自于BeanDefinitionRegistryPostProcessor,其作用是动态添加bean到容器中,mybatis在这个方法中,拿到注入的一些sqlSessionFactory和sqlSessionTemplate和该方法的参数BeanDefinitionRegistry进行动态装在。该类把这些属性赋值给ClassPathMapperScanner,让该方法去执行实际代码。

  • ClassPathMapperScanner

该类集成了ClassPathBeanDefinitionScanner,这个类有点像是独立的类,可以做一些扫描代码。就好比是spring中的StringUtils类一样,你可以单独去使用。在该类里面,会优先调用super.doScan(basePackages);获得返回值后对其进行处理。比如说之前的beanClass是接口Mapper,这里则改为mapperFactoryBean(当bean配置的是FactoryBean的时候,beanFactory调用getBean获取的不是这个Bean的实例,而是该FactoryBean的getObject队形)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容