@Transaction作用在Controller层或者是service层的配置,解决事务的作用域

一,如果在service层加事务

1.事务一般要放在Service层,放在Controller也可以,。

2.在springmvc的配置文件中扫描controller时要忽略service,因为在springmvc的配置文件加载的service事务不起作用。所以在springmvc.xml中:

         

<context:component-scan base-package="com.xxx">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />

context:component-scan>

 

spring.xml中扫描@service

<context:component-scan base-package="com.xxx">

context:component-scan>

 

 3.在service层中的类方法加@Transaction注解即可

 

    前提是:在spring.xml配置了:

   

     

       

   

 

   

 

二,在Controller层加事务:

将事物加在contrller层,只需要在springmvc.xml中加上即可,也要在扫描包同service一样(上面)并且contrller类中加上@Transactional即可。

前提是在spring.xml中要有事物管理器的配置即

 

 

     

       

   

 

注意: Controller层只支持 @Transactional 注解式事务!

注意:@Transaction不起作用的:1.静态(static )方法,  2,(private)私有化方法,   3,自调用方法(因为事务是依赖aop的,而aop是通过动态代理实现的),   

参考:https://blog.csdn.net/tongyu75/article/details/53323892

你可能感兴趣的:(@Transaction作用在Controller层或者是service层的配置,解决事务的作用域)