在同一个类中,带有@transactional注解的方法调用不带有@transactional注解的方法,事务会失效吗
时间: 2023-11-15 19:43:06 浏览: 137
不会失效。在同一个类中,带有@Transactional注解的方法调用不带有@Transactional注解的方法,事务仍然会生效。这是因为Spring事务机制是基于代理对象实现的。当一个带有@Transactional注解的方法被调用时,Spring会生成一个代理对象来管理事务。当代理对象调用其他方法时,事务仍然会被应用。所以,即使调用的方法没有@Transactional注解,事务仍然会起作用。
相关问题
在一个有@Transactional注解的方法调用处再手动开启事务
在一个有@Transactional注解的方法调用处再手动开启事务是不必要的,因为@Transactional注解已经为该方法提供了事务管理功能。当方法被调用时,Spring框架会自动为该方法开启一个事务,并在方法执行完毕后根据方法的执行结果决定是提交事务还是回滚事务。因此,在这种情况下,手动开启事务是多余的,并且可能导致事务管理的混乱。所以,不建议在有@Transactional注解的方法调用处再手动开启事务。\[1\]\[3\]
#### 引用[.reference_title]
- *1* [@Transactional注解管理事务和Spring手动提交事务(二)](https://blog.csdn.net/qq_45297578/article/details/117282911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [解决@Transactional在子方法中失效的问题,解决@Transactional失效问题,Java用Spring手动开启事务](https://blog.csdn.net/weixin_43620015/article/details/125759593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [@Transactional注解超详细](https://blog.csdn.net/weixin_45490198/article/details/131320526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
在有@Transactional方法中调用了本类私有方法,事务会不会失效
在有@Transactional方法中调用本类的私有方法,事务不会失效,私有方法也会被包含在事务中。这是因为@Transactional注解默认只会对public方法起作用,但是在同一个类中,私有方法可以被公共方法或其他私有方法所调用,因此@Transactional注解对私有方法也会生效。所以,即使被@Transactional标注的方法中调用了本类的私有方法,这些私有方法仍然会被包含在同一个事务中,保证了事务的一致性和完整性。