同类调用@Transactional
时间: 2023-10-17 16:34:18 浏览: 89
Spring @Transactional工作原理详解
你可以在一个类的方法中调用同类的其他方法,并且使用@Transactional注解来实现事务管理。事务是一组数据库操作,要么全部成功执行,要么全部回滚。@Transactional注解可以应用在类级别或方法级别。当应用在类级别时,所有该类中的方法都会受到@Transactional的影响。
举个例子,假设有一个UserService类,其中包含两个方法:addUser和deleteUser。现在我们想要在deleteUser方法中调用addUser方法,并且希望这两个操作都在一个事务中进行。
```java
@Service
public class UserService {
@Transactional
public void addUser(User user) {
// 添加用户的逻辑
}
@Transactional
public void deleteUser(String userId) {
// 删除用户的逻辑
// 调用同类的addUser方法
addUser(new User("NewUser"));
}
}
```
在上面的例子中,deleteUser方法标记了@Transactional注解,表示该方法需要在一个事务中执行。当调用同类的addUser方法时,这个调用也会受到@Transactional注解的影响,保证了addUser和deleteUser方法都在同一个事务中执行。
需要注意的是,为了@Transactional注解能够生效,你需要配置适当的事务管理器和数据源,以及开启事务支持。具体的配置可能会因使用的框架而有所不同。
阅读全文