@transactional注解属性解析
时间: 2023-10-02 21:14:11 浏览: 106
@transactional 是 Spring 框架中用于管理事务的注解,它可以被应用到类或方法上。
在类级别上,@transactional 注解可以被用于指定所有方法都应该被包装在一个事务中,也可以用于继承性地声明该类中所有方法都应该被事务性地执行。
在方法级别上,@transactional 注解可以被用于指定该方法应该被包装在一个事务中。它可以接受一系列属性来定制事务的行为:
- propagation 指定事务的传播行为,默认值为 REQUIRED。
- isolation 指定事务的隔离级别,默认值为 DEFAULT。
- timeout 指定事务的超时时间,默认值为 -1(即使用默认超时时间)。
- readOnly 指定事务是否为只读事务,默认值为 false。
- rollbackFor 指定需要回滚的异常类型,默认值为 {}。
- noRollbackFor 指定不需要回滚的异常类型,默认值为 {}。
例如,下面的代码展示了一个使用 @transactional 注解的示例:
```
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
public void saveUser(User user) {
userRepository.save(user);
}
}
```
在这个示例中,saveUser() 方法会被包装在一个事务中,并且事务的传播行为为 REQUIRED,事务的隔离级别为 DEFAULT,事务是读写的,如果发生 RuntimeException 异常,事务会回滚。
阅读全文