Mybatis,DataSource生成解析
阿新 • • 發佈:2018-11-19
1.Configuration初始化,載入JNDI,POOLED,UNPOOLED的工廠類,並載入到TypeAliasRegistry的Map<String, Class<?>> TYPE_ALIASES = new HashMap<>()中:
圖1.
圖7.
那麼對於設定了<dataSource type="POOLED">來說,上面的如poolMaximumActiveConnections這些屬性都是可以配置在xml中的,通過UnpooledDataSourceFactory的setProperties方法來設定。
圖8.
最後會把生成的DataSource放入到Environment中,Configuration最後在載入Environment,如圖4。
至於什麼時候連線資料庫,怎麼實現“連線池”的,怎麼完成一次查詢的,下次在分析。
如果有講的不對的請指出,謝謝,共同進步!
2.解析environments標籤: 圖2. 這時會根據標籤下面的<transactionManager type="JDBC"/>來判斷生成哪一種事務的類: 圖3. 在解析<dataSource type="POOLED">來判斷生成哪一張工廠類,並生成Datasource: 圖4. 圖5. 其實POOLED的工廠類是UNPOOLED的子類,POOLED的DataSource也是UNPOOLED的子類,而且在POOLED的無參構造中其實例項化的就是UNPOOLED的DataSource: 圖6.