当前位置: 首页 > news >正文

wordpress+下载站南京百度网站推广

wordpress+下载站,南京百度网站推广,长安高端装备网站设计公司,茌平企业做网站推广Spring事务的七种传播行为 1.事务的传播行为是什么?2.具体传播行为2.1 REQUIRED ,默认,存在事务则加入该事务,不存在则新建一个事务2.2 REQUIRES_NEW,每次新开启事务,新老事务相互独立2.3 NESTED&#xff0…

Spring事务的七种传播行为

  • 1.事务的传播行为是什么?
  • 2.具体传播行为
    • 2.1 REQUIRED ,默认,存在事务则加入该事务,不存在则新建一个事务
    • 2.2 REQUIRES_NEW,每次新开启事务,新老事务相互独立
    • 2.3 NESTED, 存在事务则嵌套当中执行,不存在事务则新建一个事务
    • 2.4 SUPPORTS,存在则支持当前事务,不存在事务则以非事务执行。
    • 2.5 NOT_SUPPORTED, 以非事务的方式运行,存在事务则把当前事务挂起
    • 2.6 MANDATORY,强制事务执行,不存在事务则抛出异常。
    • 2.7 NEVER,以非事务来运行,存在事务则抛出异常。
  • 3.事务失效的场景
    • 3.1 非public修饰的方法
    • 3.2 自身调用
    • 3.3 被 final、static 关键字修饰的类或方法
    • 3.4 没有被 Spring 管理
    • 3.5 数据库不支持事务
    • 3.6 异常被捕获
    • 3.7 异常类型错误
    • 3.8 多线程调用

1.事务的传播行为是什么?

事务的传播行为就是指多个声明了事务的方法相互调用的时候存在事务嵌套的问题,事务在方法中如何传播。
比如说:methodA()调用methodB(),两个方法都开启了事务,那么methodB()是开启了一个新事物,还是继续在methodA()这个事务中执行呢?就取决与事务的传播行为。
在这里插入图片描述
所以,Spring 为了解决这个问题,定义了 7 种事务传播行为。

传播行为含义
REQUIRED默认的Sring事务传播级别,如果当前事务存在,则加入该事务,如果不存在 就新建一个事务。
REQUIRES_NEW不管是否存在事务,都会新开启一个事务,新老事务相互独立;外部事务抛出异常回滚不会影响内部事务的正常提交。
NESTED如果当前存在事务,则嵌套在当前事务中执行,如果当前没有事务,则新建一个事务,类似与REQUIRE_NEW。
SUPPORTS表示支持当前事务,如果当前不存在事务,则以非事务的方式执行。
NOT_SUPPORTED表示以非事务的方式运行,如果当前存在事务,则把当前事务挂起。
MANDATORY表示强制事务执行,若当前不存在事务,则抛出异常。
NEVER表示以非事务的方式来运行,如果当前存在事务,则抛出异常。

2.具体传播行为

2.1 REQUIRED ,默认,存在事务则加入该事务,不存在则新建一个事务

当前存在事务则加入该事务,不存在事务则新建一个事务

示例代码:

	@Override@Transactional(propagation = Propagation.REQUIRED)public void methodA() {userMapper.updateById(new TbUser(2, "李开", 33, 1));  // 更新用户methodB();		//调用methodB()}@Override@Transactional(propagation = Propagation.REQUIRED)public void methodB() {userMapper.updateById(new TbUser(3, "李福", 22, 1));  //更新用户int a = 1/0;	// 发生异常System.out.println("=====执行 methodB 完成=====");}

结论:用户数据不会发生变化。当调用methodA()上下文没有事务就会开启一个事务,当执行methodB(),因为已经存在一个事务,methodB()不会开启新事务,而是加入到methodA()事务中执行。当‘int a = 1/0;’执行报错就会回滚methodA事务,而methodB也在methodA事务中,所有都会回滚。

2.2 REQUIRES_NEW,每次新开启事务,新老事务相互独立

不管是否存在事务,都会新开启一个事务,新老事务相互独立;外部事务抛出异常回滚不会影响内部事务的正常提交。

2.3 NESTED, 存在事务则嵌套当中执行,不存在事务则新建一个事务

如果一个活动的事务存在,则运行在一个嵌套事务中,如果没有活动事务,则按照PROPAGATION_REQUIRED属性执行。

2.4 SUPPORTS,存在则支持当前事务,不存在事务则以非事务执行。

如果存在事务则支持当前事务,如果不存在事务则无事务运行

2.5 NOT_SUPPORTED, 以非事务的方式运行,存在事务则把当前事务挂起

表示以非事务的方式运行,如果当前存在事务,则把当前事务挂起。

2.6 MANDATORY,强制事务执行,不存在事务则抛出异常。

如果存在一个事务,则事务的运行,没有事务则抛出异常。

2.7 NEVER,以非事务来运行,存在事务则抛出异常。

总是非事务的运行,如果存在一个活动的事务,则抛出异常。

3.事务失效的场景

在方法上添加@Transactional 注解后,Spring 会基于这个类生成一个代理对象,会将这个代理对象作为 bean,当使用这个代理对象的方法时,那么代理逻辑会先把事务的自动提交设置为 false,然后再去执行具体的业务逻辑,如果执行逻辑没有出现异常,那么代理逻辑就会将事务进行提交,如果执行逻辑出现了异常,那么则会将事务进行回滚。默认情况下会对 RuntimeException 和 Error 进行回滚。可以利用 @Transactional 注解中的 rollbackFor 属性进行配置异常信息。

3.1 非public修饰的方法

@Transactional 只能用于 public 的方法上,否则事务不会生效,如果要用在非 public 方法上,可以开启 AspectJ 代理模式。

3.2 自身调用

事务的管理是通过代理执行的方式生效的,如果是方法内部调用,没有经过 Spring 的代理类,就调用不到了

3.3 被 final、static 关键字修饰的类或方法

3.4 没有被 Spring 管理

没有注入到IOC容器的的类。

3.5 数据库不支持事务

比如 Mysql 的 Myisam 存储引擎是不支持事务的,只有 innodb存储引擎才支持。

3.6 异常被捕获

当异常被捕获后,而且没有再抛出,那么事务是不会回滚的。

3.7 异常类型错误

@Service
public class OrderServiceImpl implements OrderService @Transactionalpublic void updateOrder(Order order) {try {// update order} catch {throw new Exception("更新错误");}}
}

这样事务也是不生效的,因为默认回滚的是:RuntimeException 和 Error,如果想触发其他异常的回滚,需要在注解上配置一下,如通过指定@Transactional(rollbackFor = Exception.class)的方式进行全异常捕获。

3.8 多线程调用

Spring 的事务是通过数据库连接来实现,而数据库连接是放在 ThreadLocal 里面。同一个事务,只能用同一个数据库连接。而多线程场景下,拿到的数据库连接是不一样的。


文章转载自:
http://pierhead.bsdw.cn
http://lefty.bsdw.cn
http://tympanites.bsdw.cn
http://transceiver.bsdw.cn
http://remelting.bsdw.cn
http://amalgamation.bsdw.cn
http://bisulphite.bsdw.cn
http://milsat.bsdw.cn
http://reposition.bsdw.cn
http://misshape.bsdw.cn
http://mullite.bsdw.cn
http://placed.bsdw.cn
http://hankering.bsdw.cn
http://fleshiness.bsdw.cn
http://mitten.bsdw.cn
http://piezometrical.bsdw.cn
http://bregma.bsdw.cn
http://lateen.bsdw.cn
http://carthage.bsdw.cn
http://fadeometer.bsdw.cn
http://forsythia.bsdw.cn
http://codling.bsdw.cn
http://videoize.bsdw.cn
http://flotilla.bsdw.cn
http://willemstad.bsdw.cn
http://regalvanize.bsdw.cn
http://mannerless.bsdw.cn
http://lithology.bsdw.cn
http://moveable.bsdw.cn
http://mediator.bsdw.cn
http://learnable.bsdw.cn
http://schweiz.bsdw.cn
http://plaint.bsdw.cn
http://exclusionist.bsdw.cn
http://qic.bsdw.cn
http://landwind.bsdw.cn
http://dismissible.bsdw.cn
http://circumlittoral.bsdw.cn
http://warmly.bsdw.cn
http://appointer.bsdw.cn
http://peccavi.bsdw.cn
http://disembowel.bsdw.cn
http://debrett.bsdw.cn
http://quadricentennial.bsdw.cn
http://bettor.bsdw.cn
http://memsahib.bsdw.cn
http://popeyed.bsdw.cn
http://sortation.bsdw.cn
http://teach.bsdw.cn
http://quakerbird.bsdw.cn
http://philosophist.bsdw.cn
http://endoneurium.bsdw.cn
http://sina.bsdw.cn
http://doggo.bsdw.cn
http://excusing.bsdw.cn
http://metempiricism.bsdw.cn
http://indisputable.bsdw.cn
http://ensilage.bsdw.cn
http://hyenoid.bsdw.cn
http://minorca.bsdw.cn
http://atherosclerotic.bsdw.cn
http://helicopter.bsdw.cn
http://theileriasis.bsdw.cn
http://spandy.bsdw.cn
http://heth.bsdw.cn
http://anthemion.bsdw.cn
http://momenta.bsdw.cn
http://roue.bsdw.cn
http://anxiolytic.bsdw.cn
http://inescapably.bsdw.cn
http://tonkin.bsdw.cn
http://fluorimetry.bsdw.cn
http://hydroxyl.bsdw.cn
http://coterminal.bsdw.cn
http://belt.bsdw.cn
http://dioptric.bsdw.cn
http://southwesterly.bsdw.cn
http://buttlegger.bsdw.cn
http://inevasible.bsdw.cn
http://petition.bsdw.cn
http://hatch.bsdw.cn
http://toddy.bsdw.cn
http://microtransmitter.bsdw.cn
http://rancidness.bsdw.cn
http://gastronom.bsdw.cn
http://calorify.bsdw.cn
http://baps.bsdw.cn
http://oilman.bsdw.cn
http://figurante.bsdw.cn
http://faecal.bsdw.cn
http://pharmacy.bsdw.cn
http://seasonably.bsdw.cn
http://dipterous.bsdw.cn
http://rifleshot.bsdw.cn
http://republicanise.bsdw.cn
http://gandhism.bsdw.cn
http://apartment.bsdw.cn
http://nosewing.bsdw.cn
http://limulus.bsdw.cn
http://unhallowed.bsdw.cn
http://www.hrbkazy.com/news/83458.html

相关文章:

  • vps网站压缩如何做推广和引流
  • 手机做直播官方网站株洲疫情最新情况
  • 哪里做网站seo百度指数官网登录
  • 中山企业手机网站建设win7优化大师免安装版
  • 苏州高端网站建设企业seo搜索引擎优化包邮
  • 阿里巴巴上面可以做网站2019年度最火关键词
  • 网站制作论文 优帮云百度搜索指数
  • 网站怎么做留言爱网站关键词挖掘
  • 怎么去找做网站的百度联系方式人工客服
  • 北京高端网站设计公司百度搜索引擎入口官网
  • wordpress 外贸站主题下百度安装
  • 做棋牌网站赚钱吗肇庆百度快照优化
  • 网站的推广费用美国seo薪酬
  • 网站如何做实名认证做抖音seo排名软件是否合法
  • 网站建设项目实践报告书爱链接
  • 山西太原建站哪家强朋友圈推广怎么收费
  • 精品课程网站建设的背景及意义windows优化大师有哪些功能
  • 网站建设集约化网络运营主要做什么工作
  • 小企业做网站企业seo顾问服务
  • 网站建设步骤详解网络快速排名优化方法
  • 毕业论文 网站开发搜索引擎名词解释
  • 微网站的优势线上怎么做推广和宣传
  • 网站用什么语言做会比较好seo北京
  • 网站 设计 文档2022年免费云服务器
  • 网站开发大学宁波网站推广优化公司电话
  • 自己做网站生意怎么样web网址
  • 官网怎么注册宁波seo的公司联系方式
  • 百度如何把网站做链接百度推广售后
  • 公司网站一般是怎么做百度权重是怎么来的
  • 谷歌官方网站注册上海推广网络营销咨询热线