@Transactional 可以在controller 层使用吗?
时间: 2023-10-27 13:40:04 浏览: 156
可以在Controller层使用@Transactional注解,它可以用于控制数据库事务的提交和回滚。在Controller层中,如果有多个操作需要同时完成或者出现异常需要回滚时,可以使用该注解。但是需要注意的是,建议将事务控制移到Service层,以保证控制事务的粒度更细,并且能够更好地利用Spring框架对事务的支持。
相关问题
@Transactional注解在controller使用
@Transactional注解在controller中使用是可以的。通常情况下,@Transactional注解主要用于service层的方法上,用于实现事务管理。但是在一些需要在controller层进行事务管理的场景下,也可以将@Transactional注解加在controller方法上。然而,需要注意的是,如果在controller方法上加上@Transactional注解,可能会导致整个controller的方法报404错误。为了解决这个问题,可以注入PlatformTransactionManager并在需要事务管理的方法中手动进行事务管理。这样可以在controller层使用@Transactional注解。但是需要注意的是,尽量将@Transactional注解放在service层的最外层方法上,而不是在controller层使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [SpringBoot的Controller到底能不能使用@Transactional注解?](https://blog.csdn.net/m0_48203500/article/details/124164863)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [关于Springboot在controller层加@Transactional注解,导致整个类无法访问的问题解决。](https://blog.csdn.net/ljiew123/article/details/105121072)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [controller层到底能不能用@Transactional注解?](https://blog.csdn.net/qq_43417581/article/details/126126906)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
@Transactional 加在Controller
如果在Controller层不加@Transactional注解,不会产生404异常的原因是因为Spring不会为该类生成代理。在AbstractHandlerMethodMapping绑定的时候,这个类不是一个代理,所以匹配成功。一般开发中事务要求放在Service层,但有些情况下可能会要求放在Controller层。在Controller层使用@Transactional的用法和在Service层使用是一样的。
阅读全文