Pio*_*ler 1 java spring jpa transactions
我想测量一下Spring管理的交易时间,用JpaTJpaTransactionManager/ PlatformTransactionManager检测长挂起的交易,并警告一些听众关于这种情况.
我可以在@Transactional方法上使用方面但由于事务传播,它不是检测确切事务何时开始或完成的好方法.
像事务监听器这样的东西可以访问启动/完成事件以及启动trasaction的对象的bean名称或只是堆栈跟踪
在带注释的方法中使用TransactionSynchronizationManager:
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization(){
long startTime;
void beforeCommit() {
startTime = System.nanoTime();
}
void afterCommit(){
System.out.println("Transaction time: " + (System.nanoTime() - startTime));
}
});
Run Code Online (Sandbox Code Playgroud)
跟踪方面的所有交易:
@Aspect
class TransactionAspect extends TransactionSynchronizationAdapter {
@Before("@annotation(org.springframework.transaction.annotation.Transactional)")
public void registerTransactionSyncrhonization() {
TransactionSynchronizationManager.registerSynchronization(this);
}
ThreadLocal<Long> startTime = new ThreadLocal<>();
void beforeCommit() {
startTime.set(System.nanoTime());
}
void afterCommit(){
System.out.println("Transaction time: " + (System.nanoTime() - startTime.get()));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |