概要:
现有spring事务管理配置存在问题:对数据库无关的service层方法,也会进行事务管理(创建数据库链接、提交(回滚)事务、释放连接等),消耗资源。
修改方案:只对执行数据库写操作的service层方法进行事务管理,香港服务器,其它方法均不做配置。
需要做的工作:统计现有service层方法命名;修改事务管理配置文件;规范后续开发时的service层方法命名。
后续工作
配置如下:
日志输出:
1、com.sinosig.carpremium.services.impl.TokenServiceImpl.countToken
创建事务
2012-01-1711:46:39,656DEBUG[org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction:371]-Creatingnewtransactionwithname[com.sinosig.carpremium.services.impl.TokenServiceImpl.countToken]:PROPAGATION_REQUIRED,ISOLATION_DEFAULT
建立链接
2012-01-1711:46:58,375DEBUG[org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin:202]-AcquiredConnection[jdbc:oracle:thin:@10.10.114.161:1521:ifpdb,UserName=AUTOCREAT,OracleJDBCdriver]forJDBCtransaction
2012-01-1711:46:58,468DEBUG[org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin:219]-SwitchingJDBCConnection[jdbc:oracle:thin:@10.10.114.161:1521:ifpdb,UserName=AUTOCREAT,OracleJDBCdriver]tomanualcommit
执行处理逻辑
2012-01-1711:46:58,468INFO[com.sinosig.carpremium.services.impl.TokenServiceImpl.countToken:44]-令牌基数是:100000,当前令牌值是:1
commit预处理
2012-01-1711:46:58,468DEBUG[org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit:903]-TriggeringbeforeCommitsynchronization
2012-01-1711:46:58,468DEBUG[org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:916]-TriggeringbeforeCompletionsynchronization
2012-01-1711:46:58,468DEBUG[org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit:730]-Initiatingtransactioncommit
提交事务
2012-01-1711:46:58,484DEBUG[org.springframework.jdbc.datasource.DataSourceTransactionManager.doCommit:259]-CommittingJDBCtransactiononConnection[jdbc:oracle:thin:@10.10.114.161:1521:ifpdb,UserName=AUTOCREAT,OracleJDBCdriver]
Commit后处理
2012-01-1711:46:58,484DEBUG[org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCommit:929]-TriggeringafterCommitsynchronization
2012-01-1711:46:58,484DEBUG[org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:945]-TriggeringafterCompletionsynchronization
释放数据库链接
2012-01-1711:46:58,484DEBUG[org.springframework.jdbc.datasource.DataSourceTransactionManager.doCleanupAfterCompletion:314]-ReleasingJDBCConnection[jdbc:oracle:thin:@10.10.114.161:1521:ifpdb,UserName=AUTOCREAT,OracleJDBCdriver]aftertransaction
创建事务
创建数据库链接
2012-01-1711:47:05,687DEBUG[org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin:202]-AcquiredConnection[jdbc:oracle:thin:@10.10.114.161:1521:ifpdb,UserName=AUTOCREAT,OracleJDBCdriver]forJDBCtransaction
2012-01-1711:47:05,687DEBUG[org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin:219]-SwitchingJDBCConnection[jdbc:oracle:thin:@10.10.114.161:1521:ifpdb,UserName=AUTOCREAT,OracleJDBCdriver]tomanualcommit
执行逻辑
2012-01-1711:47:05,765DEBUG[com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug:27]-{conn-100000}Connection
到一个新的环境去欣赏去看去听,