Spring 事务管理核心
Spring 事务管理是确保数据库操作符合 ACID(原子性、一致性、隔离性和持久性)特性的核心机制。虽然支持编程式管理,但实际开发中更推荐声明式事务。通过 @Transactional 注解,开发者无需手动编写 begin、commit 或 rollback 代码,Spring 框架会自动处理事务的生命周期。
@Transactional 注解详解
该注解可作用于类或方法级别。作为类注解时,默认仅对类中所有 public 方法生效;作为方法注解时,同样遵循此规则。若将非 public 方法标记为事务,通常不会生效。
@RequestMapping("/test")
@RestController
@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("test1 注册成功,userName:{},password:{}", userName, password);
}
return "注册成功";
}
}
2.1 rollbackFor:回滚策略
默认情况下,Spring 仅在抛出 非受查异常(RuntimeException) 或 错误(Error) 时触发回滚。如果业务逻辑抛出了受查异常(如 IOException),事务默认会提交。


