---
url: /diary/c8jc4whr/index.md
description: Spring Boot 两种手动事务处理模版，TransactionTemplate 和 PlatformTransactionManager 的使用方法。
---
> `Java` 的2种灵活事务处理模版

## 事务事件

必须在使用事务的方法中引用，否则会报错

```java
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {  
  
    @Override  
    public void afterCompletion(int status) {  
        // 事务执行完成后执行，不快于事务提交执行  
        switch (status) {  
            case TransactionSynchronization.STATUS_COMMITTED:  
                // 事务已提交  
                break;  
            case TransactionSynchronization.STATUS_ROLLED_BACK:  
                // 事务已回滚  
                break;  
            default:  
                logger.info("事务未知状态：{}", status);  
                break;  
        }  
        runnable.run();  
    }  
});
```

## 手动事务

```java
// 注入事务
@Resource  
private PlatformTransactionManager platformTransactionManager;

// 手动开启事务  
DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
TransactionStatus transaction = platformTransactionManager.getTransaction(def);

// 手动提交事务
platformTransactionManager.commit(transaction);

// 手动回滚事务  
platformTransactionManager.rollback(transaction);

```
