Spring 事务管理核心:@Transactional 注解与传播机制
Spring 事务管理是确保数据库操作符合 ACID(原子性、一致性、隔离性和持久性)特性的核心机制。虽然支持编程式管理,但实际开发中更推荐声明式方式,通过 @Transactional 注解即可自动处理事务的开启、提交和回滚,无需手动编写 begin、commit 等样板代码。
@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 "注册成功";
}
}
异常回滚策略 (rollbackFor)
默认情况下,只有抛出非受查异常(RuntimeException)或错误(Error)时才会触发回滚。如果业务需要捕获受查异常(如 IOException)并回滚,必须显式指定 rollbackFor。
String IOException {
();
}


