springBoot事务处理
时间: 2023-10-28 14:01:18 浏览: 87
在 Spring Boot 中,事务处理非常简单,只需要添加注解即可。通常情况下,我们使用 @Transactional 注解来标记一个方法需要事务处理。
使用 @Transactional 注解时,需要注意以下几点:
1. 在类或方法上添加 @Transactional 注解,表示该类或方法需要事务处理。
2. 在方法上添加 @Transactional 注解时,默认情况下事务只在抛出 RuntimeException 及其子类异常时回滚。
3. 可以通过设置 rollbackFor 属性来指定需要回滚的异常类型。
4. 事务只在 public 方法上起作用。
5. 如果在一个类的方法中调用另一个方法,被调用的方法上的 @Transactional 注解不会起作用,需要在被调用的方法所在的类上添加 @Transactional 注解。
示例代码如下:
```java
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Transactional
public void save(User user) {
userDao.save(user);
}
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void delete(Long id) throws Exception {
User user = userDao.findById(id);
if (user == null) {
throw new Exception("用户不存在");
}
userDao.delete(user);
}
}
```
在上面的示例代码中,我们定义了两个方法:save 和 delete。在 save 方法上添加了 @Transactional 注解,表示该方法需要事务处理。在 delete 方法上,我们通过设置 propagation 属性来指定事务的传播行为,通过设置 rollbackFor 属性来指定需要回滚的异常类型。
需要注意的是,在使用事务处理时,一定要保证事务的粒度要尽可能小,以减少事务的锁定时间,提高并发性能。同时,对于需要回滚的异常类型,一定要慎重选择,避免将不需要回滚的异常也加入回滚列表中,导致事务回滚过于频繁,影响性能。
阅读全文