看到一篇blog,关于《spring同一个事务中dao被循环调用时候,数据不会实时更新》参见http://www.javatang.com/archives/2014/08/15/09051117.html,决心看一下Spring对数据库Connection相关管理的源码,总结如下:
Spring中的DataSource 事务。 DataSource事务相关的类比较多,我们一步步来拨开其中的密团。 1 如何获得连接 看DataSourceUtils代码 java代码: protected static Connection doGetConnection(DataSource dataSource, boolean allowSynchronization) throws SQLException {
ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizati onManager.getResource(dataSource); if (conHolder != null) {
conHolder.requested(); return conHolder.getConnection(); } Connection con = dataSource.getConnection(); if (allowSynchronization && TransactionSynchronizati onManager.isSynchronizationActive()) {
conHolder = new ConnectionHolder(con);