Mybatis,DataSource生成解析

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。
至于什么时候连接数据库,怎么实现“连接池”的,怎么完成一次查询的,下次在分析。
如果有讲的不对的请指出,谢谢,共同进步!

猜你喜欢

转载自www.cnblogs.com/shenqiaqia/p/9981376.html