码迷,mamicode.com
首页 > 编程语言 > 详细

Mybatis:整合Spring

时间:2020-07-09 22:35:55      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:安全   自己   template   bat   注入   线程安全   直接   ati   proxy   

SqlSessionFactory何时创建

容器启动时创建

能否直接使用DefaultSqlSession

不能,因为该类不是线程安全的,直接用会有问题,Spring环境中使用了SqlSessionTemplate类代替
为什么SqlSessionTemplate是线程安全的:SqlSessionTemplate中有一个sqlSessionProxy,该类是代理了DefaultSqlSession的类,内部每次都从线程内部的Threadlocal拿到sqlSession。

怎么在DAO层的实现类获得SqlSessionTemplate

继承SqlSessionDaoSupport类,就可以拿到SqlSessionTemplate。但是实际使用过程中压根没有继承SqlSessionDaoSupport类,实际中都是直接通过@Autowired注入使用了。
因为注册到容器中的是MapperFactoryBean,在注入的时候调用了MapperFactoryBean的getObject()方法,该类MapperFactoryBean继承了SqlSessionDaoSupport类,可以拿到SqlSessionTemplate,再通过SqlSessionTemplate.getMapper()方法,返回了Mapper的代理对象(和Mybatis自己返回的一样了)。

接口扫描注册

什么时候扫描,注册到容器中的是什么
BeanDefinition注册完以后的扫描,注册到容器中的是MapperFactoryBean。

Mybatis:整合Spring

标签:安全   自己   template   bat   注入   线程安全   直接   ati   proxy   

原文地址:https://www.cnblogs.com/fcb-it/p/13276321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!