文档章节

SpringMVC+Mybatis声明式事务分析

 挨踢精英
发布于 2016/04/15 15:43
字数 477
阅读 70
收藏 11

(2-1): expression="execution(* *..*SVImpl.*(..))" 的使用

第一个【*】: 任意返回值类型

第二个【*】:任意包名

第一个【..】:通配包路径 可以有0个或者多个包路径

第三个【*】:任意字符+SVImpl的class

第四个【*】:任意方法名

第二个【..】:通配方法可以有0个或者多个参数

(2-2): 事务的传播级别

1、PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启。

2、PROPAGATION_SUPPORTS : 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。 
3、PROPAGATION_MANDATORY : 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。 
4、PROPAGATION_REQUIRES_NEW : 总是开启一个新的事务。如果一个事务存在,则将这个存在的事务挂起。 
5、PROPAGATION_NOT_SUPPORTED : 总是非事务地执行,并挂起任何存在的事务。 
6、PROPAGATION_NEVER : 总是非事务地执行,如果存在一个活动事务,则抛出异常。 
7、 PROPAGATION_NESTED : 如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动事务,则按TransactionDefinition.PROPAGATION_REQUIRED属性执行

 <!-- 拦截器方式配置事务 -->

 <!-- 配置事务传播级别 -->

 <tx:advice id="txAdvice" transaction-manager="transactionManager">

  <tx:attributes>

   <tx:method name="save*" propagation="REQUIRED" />

   <tx:method name="add*" propagation="REQUIRED" />

   <tx:method name="create*" propagation="REQUIRED" />

   <tx:method name="insert*" propagation="REQUIRED" />

   <tx:method name="update*" propagation="REQUIRED" />

   <tx:method name="merge*" propagation="REQUIRED" />

   <tx:method name="del*" propagation="REQUIRED" />

   <tx:method name="remove*" propagation="REQUIRED" />

   <tx:method name="put*" propagation="REQUIRED" />

   <tx:method name="get*" propagation="SUPPORTS" read-only="true" />

   <tx:method name="count*" propagation="SUPPORTS" read-only="true" />

   <tx:method name="find*" propagation="SUPPORTS" read-only="true" />

   <tx:method name="list*" propagation="SUPPORTS" read-only="true" />

   <tx:method name="*" propagation="SUPPORTS" read-only="true" />

  </tx:attributes>

 </tx:advice>  

 <aop:config>

  <!-- 只对业务逻辑层实施事务 -->

  <aop:pointcut id="txPointcut"

   expression="execution(* *..*SVImpl.*(..))" />

   

  <!-- Advisor定义,切入点和通知分别为txPointcut、txAdvice -->

  <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" />

 </aop:config>


© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 32
码字总数 8431
作品 0
株洲

暂无文章

Spring中static变量不能@value注入的原因

今天本想使用@Value的方式使类中的变量获得yml文件中的配置值,然而一直失败,获得的一直为null。 类似于这样写的。 public class RedisShardedPool { private static ShardedJedisPool pool...

钟然千落
今天
2
0
CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
38
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部