Spring 事务管理概述
Spring 事务管理是确保数据库操作原子性、一致性、隔离性和持久性(ACID)的核心机制。相比编程式事务,声明式事务通过 @Transactional 注解实现,无需手动编写开启、提交或回滚代码,开发效率更高。
@Transactional 注解基础
该注解提供声明式事务管理,简化了数据库事务流程。开发者只需在方法或类上添加此注解,Spring 框架便会自动处理事务边界。
- 类级别:为类中所有 public 方法添加事务配置。
- 方法级别:默认仅对 public 方法生效。
@RestController
@RequestMapping("/test")
@Slf4j
public class TestController {
private final UserService userService;
@Autowired
public TestController(UserService userService) {
this.userService = userService;
}
@Transactional
@RequestMapping("/test1")
public String test1(String userName, String password) {
UserInfo userInfo = new UserInfo();
userInfo.setUserName(userName);
userInfo.setPassword(password);
Integer result = userService.register(userInfo);
if (result == 1) {
log.info("注册成功,userName:{},password:{}", userName, password);
}
return "注册成功";
}
}
调用接口后,若业务逻辑正常,数据将提交;若抛出异常且符合回滚条件,数据库状态将保持不变。
回滚策略控制
默认情况下,Spring 仅在抛出非受查异常(RuntimeException)或错误(Error)时触发回滚。如果希望受检异常也能触发回滚,需显式配置 rollbackFor。


