Spring 数据库连接(Connection)绑定线程(Thread)的(2)

prepareTransactionalConnection(con, definition);
            //设置该连接现在已经有事务了
            txObject.getConnectionHolder().setTransactionActive(true);

int timeout = determineTimeout(definition);
            if (timeout != TransactionDefinition.TIMEOUT_DEFAULT) {
                txObject.getConnectionHolder().setTimeoutInSeconds(timeout);
            }
      
            // Bind the connection holder to the thread.
        //这里把新连接绑定到当前线程

if (txObject.isNewConnectionHolder()) {
                TransactionSynchronizationManager.bindResource(obtainDataSource(), txObject.getConnectionHolder());
            }
        }

catch (Throwable ex) {
            if (txObject.isNewConnectionHolder()) {
                DataSourceUtils.releaseConnection(con, obtainDataSource());
                txObject.setConnectionHolder(null, false);
            }
            throw new CannotCreateTransactionException("Could not open JDBC Connection for transaction", ex);
        }
    }

该方法的主要作用都写在注释里了,看一下就好。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/62401b08c9bdfed7ef95beb4e73391db.html