@Transactional 可以放在类上吗
时间: 2023-10-17 18:31:07 浏览: 31
是的,@Transactional 注解可以放在类上。根据Spring官方建议,事务功能更适合放在具体的类上或类的方法上。然而,如果项目架构更适合使用接口的动态代理,将 @Transactional 注解应用到接口或接口方法上也是可以的。最重要的是选择最适合自己项目的方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [@Transactional注解在类上还是接口上使用,哪种方式更好?](https://blog.csdn.net/qq_39654841/article/details/123914446)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
@Transactional可以放在mapper层的接口上吗
可以将@Transactional注解放在mapper层的接口上,但是它对mapper方法的事务处理可能不是很灵活。因为mapper层的接口通常是由MyBatis框架生成的实现类来执行的,而@Transactional注解是Spring框架提供的事务处理机制,二者并不是天然兼容的。如果要在mapper层使用@Transactional注解,可以在Spring配置文件中开启事务注解驱动,这样Spring就会扫描所有的@Transactional注解并为其生成代理对象,从而实现事务的管理和控制。不过,建议将@Transactional注解放在service层或service层调用mapper层的方法上,这样更加符合业务逻辑的划分。
@Transactional 放实现类可以妈
可以,@Transactional注解可以放在实现类上。当使用接口和实现类的方式组织代码时,我们通常将事务注解放在实现类上。这是因为Spring AOP代理是基于接口进行的,默认情况下,只有在接口方法上加了@Transactional注解才会生效。所以,如果将@Transactional注解放在接口上,并在实现类中实现接口方法,事务将不会起作用。因此,为了确保事务的生效,我们应该将@Transactional注解放在实现类的方法上。这样,当调用实现类的方法时,Spring AOP代理就会生效,并对方法进行事务管理。