1. 程式人生 > >Mybatis,DataSource生成解析

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。 至於什麼時候連線資料庫,怎麼實現“連線池”的,怎麼完成一次查詢的,下次在分析。 如果有講的不對的請指出,謝謝,共同進步!