Spring 提供一个 @EnableTranscationManagement 注解在配置类上来开启声明式事务的支持。使用了 @EnableTranscationManagement 后,Spring 容器会自动扫描注解 @Transactional 的方法与类。@EnableTranscationManagement 的使用方式如下:
@Configuration
@EnableTranscationManagement
public class AppConfig{
}
springboot具体应用
// 使用 @Transactional 注解的 rollbackFor 属性,指定特定异常时,触发回滚
@Transactional(rollbackFor = {IllegalArgumentException.class})
@Override
public Student saveStudentWithRollBack(Student student) {
Student s = studentRepository.save(student);
if ("高斯林".equals(s.getName())){
//硬编码,手动触发异常
throw new IllegalArgumentException("高斯林已存在,数据将回滚");
}
return s;
}
// 使用 @Transactional 注解的 noRollbackFor 属性,指定特定异常时,不触发回滚
@Transactional(noRollbackFor = {IllegalArgumentException.class})
@Override
public Student saveStudentWithoutRollBack(Student student) {
Student s = studentRepository.save(student);
if ("高斯林".equals(s.getName())){
throw new IllegalArgumentException("高斯林已存在,数据将不会回滚");
}
return s;
}