spring整合mybatis操作:
原始的spring整合mybatis, 我们会在配置文件中, 添加这两个配置,
sqlSessionFactoryBean和MapperScannerConfigure, 另外还有一个
数据源和事务管理器(这里不再贴出);
然后我们就可以在spring容器中使用mybatis;
spring整合mybatis过程如下:
1. 配置文件中配置mapperScannerConfigure, 并在里面配置要扫描包
的路径;
2. maaperSacnnerConfigure类实现了BeanDefinitionRegistryPost
Processor接口, 执行了其中的postProcessBeanDefinitionRegistry
方法(bean实例还未被创建之前执行);
3. 这个方法创建了一个ClassPathMapperScanner类, 并将BeanDefini
tionRegistry(他可以将BeanDefintion添加到spring容器中)注入进
去, 然后为这个scanner设置各种属性, 其中包括mybatis的配置, 以及
sqlsessionFactory, 最后调用scan方法;
4. scan方法则是扫描包下的class文件, 然后包下的接口封装成Bean
Definition类, 加入到spring容器中;
5. sqlsessionFactoryBean类的初始化, 继承了主要接口FactoryBean
<SqlSessionFactory>, InitializingBean, ApplicationListener
<ApplicationEvent>;
6. InitializingBean会bean初始化完成赋值之后, 执行afterPro
pertiesSet方法, 这个方法中创建了一个sqlSessionFactory(这个创建
过程中, 涉及到了mapper.xml文件的的解析, 并将它们封装成各种对
象);
7. ApplicationListener, spring容器初始化完成之后, 调用onAppli
cationEvent, 调试时没有走这个地方(暂时不做解释);
8. FactoryBean<SqlSessionFactory>接口主要为了生成SqlSession
Factory实例, 当进行mapper接口实例化的时候, 会调用factoryBean的
getObject方法;
9. 当serviveImp进行初始化的时候, 进行mapper的注入, 这里会初始化
这个mapper, 初始化的时候会需要设置一些属性, 这里就包括上面的
sqlSessionFactory, 设置完之后, 就是用动态代理创建mapper的代理
类设置给serviceImpl;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。