@Transaction加在类上和方法上哪个优先级高
时间: 2024-01-11 13:15:54 浏览: 28
在 Spring 中,@Transactional 注解可以加在类上和方法上,表示类级别和方法级别的事务管理。如果在类和方法上都加上了 @Transactional 注解,那么方法级别的注解优先级高于类级别的注解。
当一个方法被调用时,Spring 会检查该方法上是否有 @Transactional 注解。如果有,则会根据注解的属性设置开启一个新的事务或者使用已有的事务。如果方法上没有 @Transactional 注解,Spring 会检查该方法所在的类是否有 @Transactional 注解。如果类上有 @Transactional 注解,则使用类级别的事务管理。
在类和方法上都加上 @Transactional 注解时,方法级别的注解会覆盖类级别的注解,即使用方法级别的事务管理。例如:
```java
@Service
@Transactional
public class UserService {
@Autowired
private UserDAO userDAO;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateUser(User user) {
// 进行一些业务逻辑处理
...
// 数据库操作
userDAO.updateUser(user);
...
}
}
```
在上面的例子中,类级别和方法级别都有 @Transactional 注解。但是由于方法级别的注解覆盖了类级别的注解,因此 updateUser() 方法将使用方法级别的事务管理,而不是类级别的事务管理。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)