|  |  | 
 |  |  | import java.util.concurrent.ConcurrentHashMap; | 
 |  |  | import java.util.concurrent.ConcurrentMap; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 多数据源的事务类,事务对象由事务工厂创建,完成数据库事务操作。 | 
 |  |  |  * 事务对象包裹着: | 
 |  |  |  *   数据库连接、事务提交、事务回滚等对象及操作 | 
 |  |  |  * 在事务对象中具体决定采用的具体数据源 | 
 |  |  |  */ | 
 |  |  | public class MultiDataSourceTransaction implements Transaction { | 
 |  |  |  | 
 |  |  |     private final DataSource multidataSource; | 
 |  |  | 
 |  |  |     private boolean autoCommit; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public MultiDataSourceTransaction(DataSource dataSource) { | 
 |  |  |     public MultiDataSourceTransaction(DataSource dataSource, boolean autoCommit) { | 
 |  |  |         //dataSource是DynamicDataSource类的实例 | 
 |  |  |         this.multidataSource = dataSource; | 
 |  |  |         this.autoCommit = autoCommit; | 
 |  |  |         curConMap = new ConcurrentHashMap<>(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (!this.curConMap.containsKey(nowDsName)) { | 
 |  |  |             try { | 
 |  |  |                 Connection conn = this.multidataSource.getConnection(); | 
 |  |  |                 autoCommit=false; | 
 |  |  |                 this.autoCommit = false; | 
 |  |  |                 conn.setAutoCommit(false); | 
 |  |  |                 this.curConMap.put(nowDsName, conn); | 
 |  |  |             } catch (SQLException ex) { |