@Transactional 怎么用
时间: 2023-07-01 17:26:45 浏览: 147
spring的@Transactional注解用法解读
@Transactional 是Spring框架中用于声明式事务处理的注解,可以用于类或方法上。使用 @Transactional 注解可以让方法具有事务性,即当该方法抛出异常时,Spring会自动回滚事务,使得数据库中的数据不会被更新。下面是一个简单的示例:
```java
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Transactional
public void updateUserName(long userId, String newName) {
User user = userDao.findById(userId);
if (user == null) {
throw new IllegalArgumentException("User not found with id " + userId);
}
user.setName(newName);
userDao.save(user);
}
}
```
在上面的示例中,updateUserName 方法上添加了 @Transactional 注解,这意味着当该方法被调用时,Spring会自动开启一个事务,并在方法执行结束后根据方法的执行结果决定是提交事务还是回滚事务。
需要注意的是,@Transactional 注解只对 public 方法有效。如果希望对 protected、private 或 package-visible 方法添加事务支持,可以使用 AspectJ 来实现。另外,@Transactional 注解可以添加多个属性来配置事务的细节,例如事务的隔离级别、事务超时时间等。
阅读全文