Spring AOP propagation七种属性值

    <!-- 配置事务通知 -->
    <tx:advice id="advice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>
        </tx:attributes>
    </tx:advice>

其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED、 SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。默认是REQUIRED。
2.七种配置的意思

下面是Spring中Propagation类的事务属性详解:

REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

3.注意.

这个配置将影响数据存储,必须根据情况选择。

时间: 2024-12-26 21:32:40

Spring AOP propagation七种属性值的相关文章

Java Spring AOP的两种配置方式

第一种:注解配置AOP java中注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThrowing,@Around).2. 开发需要被拦截的类.3. 将切面配置到xml中,当然,我们也可以使用自动扫描Bean的方式.这样的话,那就交由Spring AoP容器管理. 另外需要引用 aspectJ 的 jar

spring AOP的两种配置方式

连接点(JoinPoint) ,就是spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的前.后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点.其他如AspectJ还可以让你在构造器或属性注入时都行,不过那不是咱们关注的,只要记住,和方法有关的前前后后都是连接点. 方式一:xml方式配置 1.配置xml文件 <bean id="dataSourceExchange" class="com.ooper.www.datas

spring aop的五种通知类型

昨天在腾讯课堂看springboot的视频,老师随口提问,尼玛竟然回答错了.特此记录! 问题: Spring web项目如果程序启动时出现异常,调用的是aop中哪类通知? 正确答案是: 异常返回通知. 回答问题的关键是,你得知道aop有哪几种通知类型吧! spring aop通知(advice)分成五类: 前置通知[Before advice]: 在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常. 正常返回通知[After returning advice]: 在连接点正常执行完

spring事物的七种事物传播属性行为及五种隔离级别

首先,说说什么事务(Transaction). 事务,就是一组操作数据库的动作集合.事务是现代数据库理论中的核心概念之一.如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务.当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交.由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态. 其中spring七个事物传播属性: PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. PR

5、Spring AOP的几种通知(xml)

1.前置.后置.返回.异常和环绕 1 public interface Calculator { 2 3 int add(int a, int b); 4 5 int sub(int a, int b); 6 } 7 8 public class CalculatorImpl implements Calculator { 9 10 @Override 11 public int add(int a, int b) { 12 return a + b; 13 } 14 15 @Override

spring AOP 的几种实现方式(能测试)

我们经常会用到的有如下几种 1.基于代理的AOP 2.纯简单Java对象切面 3.@Aspect注解形式的 4.注入形式的Aspcet切面 一.需要的java文件 public class ChenLliNa implements Sleepable { @Override public void sleep() { // TODO Auto-generated method stub System.out.println("乖,该睡觉了!s"); } public void slee

Android ellipsize的几种属性值介绍

在开发过程中我们希望看到textview中内容过长的话自动换行,但是调用measureText函数时发现返回值很不准确,单位也不确定,是pixel还是dip,都不准.后来想起textview中有个内容过长加省略号的属性,即ellipsize,可以较偷懒地解决这个问题,哈哈~ 用法如下: 在xml中 android:ellipsize = "end"  省略号在结尾 android:ellipsize = "start"  省略号在开头 android:ellipsi

spring aop的两种写法aspect和advisor

本文转自:https://www.cnblogs.com/leiOOlei/p/3709607.html 首先看个例子,如下 接口代码: package com.lei.demo.aop.schema; public interface IHello { public void sayHello(); } 接口实现: package com.lei.demo.aop.schema; public class HelloService implements IHello { public void

spring AOP propagation

1.前言 在声明式的事物中,要配置一个切面,即一组方法,如: <tx:advice id ="txAdvice" transaction-manager="txManager"> <tx:atrributes> <tx:method name="find" read-only propagation="NOT-SUPPORTED"/> </tx:atrributes> </