本类一个方法调用另一个方法,被调用方法怎么加事务
时间: 2024-01-22 12:04:23 浏览: 71
Spring事务管理A方法内部调用B方法的回滚问题测试代码
如果一个方法调用另一个方法,被调用方法需要加事务,可以使用 Spring 提供的编程式事务管理。具体实现如下:
1. 在被调用方法上添加 @Transactional 注解,表示该方法需要加入事务管理
```java
@Transactional
public void calledMethod() {
// do something
}
```
2. 在调用方法中使用 TransactionTemplate 手动创建事务,并调用被调用方法
```java
@Autowired
private PlatformTransactionManager transactionManager;
public void callingMethod() {
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
calledMethod();
}
});
}
```
在调用方法中手动创建事务,然后调用被调用方法,这样被调用方法就会加入到调用方法的事务管理中。
需要注意的是,被调用方法的事务管理只有在调用方法中使用 TransactionTemplate 手动创建事务时才会生效。如果调用方法已经在事务中,那么被调用方法就会共享调用方法的事务。如果调用方法没有事务,那么被调用方法也不会有事务。
阅读全文