spring boot 事务配置
时间: 2023-09-11 20:05:07 浏览: 42
在 Spring Boot 中,我们可以使用注解方式来配置事务。在 Service 层的方法上添加 `@Transactional` 注解即可启用事务。
示例代码如下:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional(rollbackFor = Exception.class)
public void save(User user) {
userRepository.save(user);
}
@Transactional(rollbackFor = Exception.class)
public void deleteById(Long id) {
userRepository.deleteById(id);
}
}
```
上述代码中,`@Transactional` 注解中的 `rollbackFor` 属性用于指定需要回滚的异常类型。如果不指定,默认情况下只会在遇到 RuntimeException 异常时回滚事务。
另外,Spring Boot 还提供了一种编程式的事务管理方式,即使用 TransactionTemplate 进行事务控制。示例代码如下:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Autowired
private TransactionTemplate transactionTemplate;
public void save(User user) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
userRepository.save(user);
}
});
}
public void deleteById(Long id) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
userRepository.deleteById(id);
}
});
}
}
```
使用 TransactionTemplate 进行事务控制的好处是可以更加灵活地控制事务的边界和提交方式。但是相对于注解方式来说,编程式的事务管理方式需要显式地处理事务的提交和回滚。