码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis,DataSource生成解析

时间:2018-11-19 11:17:16      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:info   action   ima   imu   方法   事务   图片   config   new   

1.Configuration初始化,加载JNDI,POOLED,UNPOOLED的工厂类,并加载到TypeAliasRegistry的Map<String, Class<?>> TYPE_ALIASES = new HashMap<>()中:

图1.

技术分享图片

 

2.解析environments标签:
图2.

技术分享图片

这时会根据标签下面的<transactionManager type="JDBC"/>来判断生成哪一种事务的类:
图3.
技术分享图片
在解析<dataSource type="POOLED">来判断生成哪一张工厂类,并生成Datasource:
图4.

技术分享图片

图5.
技术分享图片
其实POOLED的工厂类是UNPOOLED的子类,POOLED的DataSource也是UNPOOLED的子类,而且在POOLED的无参构造中其实实例化的就是UNPOOLED的DataSource:
图6.
技术分享图片
图7.
技术分享图片
那么对于设置了<dataSource type="POOLED">来说,上面的如poolMaximumActiveConnections这些属性都是可以配置在xml中的,通过UnpooledDataSourceFactory的setProperties方法来设置。
图8.
技术分享图片
最后会把生成的DataSource放入到Environment中,Configuration最后在加载Environment,如图4。
至于什么时候连接数据库,怎么实现“连接池”的,怎么完成一次查询的,下次在分析。
如果有讲的不对的请指出,谢谢,共同进步!

Mybatis,DataSource生成解析

标签:info   action   ima   imu   方法   事务   图片   config   new   

原文地址:https://www.cnblogs.com/shenqiaqia/p/9981376.html

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