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

彩票网站招代理广告怎么做如何百度推广

彩票网站招代理广告怎么做,如何百度推广,石油工程建设协会网站,18款免费软件app下载目录 Spring 中事务的实现编程式事务(了解即可):声明式事务(利用注解自动开启和提交事务):事务回滚注意事项: Spring 事务传播机制:1.Propagation.REQUIRED:7.Propagation.NESTED:Propagation.NESTED和1.Pr…

目录

  • Spring 中事务的实现
    • 编程式事务(了解即可):
    • 声明式事务(利用注解自动开启和提交事务):
      • 事务回滚注意事项:
  • Spring 事务传播机制:
    • 1.Propagation.REQUIRED:
    • 7.Propagation.NESTED:
    • Propagation.NESTED和1.Propagation.REQUIRED的区别:
    • 4.Propagation.REQUIRES_NEW:
    • 6.Propagation.NEVER:

Spring 中事务的实现

编程式事务(了解即可):

编程式事务需要自己手动写代码操作事务


这里用用户注册来进行演示:


Spring ⼿动操作事务和上⾯ MySQL 操作事务类似, 有 3 个重要操作步骤:
• 开启事务(获取事务)
• 提交事务
• 回滚事务

package com.suli.springtransdemo.Controller;import com.suli.springtransdemo.Service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RestController
public class UserController {@Autowiredprivate UserService userService;// JDBC 事务管理器@Autowiredprivate DataSourceTransactionManager dataSourceTransactionManager;//定义事务的属性@Autowiredprivate TransactionDefinition definition;@RequestMapping("registry")public String registry(String name, String password){/*** 1. 开启事务* 2. 数据操作* 3. 事务提交/回滚*///1. 开启事务TransactionStatus transaction = dataSourceTransactionManager.getTransaction(definition);//用户注册userService.registryUser(name,password);log.info("用户注册成功");//事务提交
//        dataSourceTransactionManager.commit(transaction);//事务回滚dataSourceTransactionManager.rollback(transaction);return "注册成功";}
}

声明式事务(利用注解自动开启和提交事务):

1.首先要添加依赖:

<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId>
</dependency>

2.要使用@Transactional注解,无需手动开启事务和提交事
务, 进入方法时自动开启事务, 方法执行完会自动提交事务,如果中途发生了没有处理的异常会自动
回滚事务.

@Slf4j
@RestController
public class UserController2 {@Autowiredprivate UserService userService;@Autowiredprivate LogInfoService logInfoService;@Transactional@RequestMapping("registry1")public String registry1(String name, String password){//用户注册Integer result = userService.registryUser(name,password);log.info("用户注册成功,影响行数"+ result);return "注册成功";}
}

事务回滚注意事项:

如果程序发生Error和IoException和RuntimeException这几个异常时,事务是不会自动进行回滚的

/*** 抛出,RuntimeException不会自动回滚* @param name* @param password* @return*/@Transactional@RequestMapping("registry2")public String registry(String name, String password){//用户注册Integer result = userService.registryUser(name,password);log.info("用户注册成功,影响行数"+ result);try {int a = 10/0;}catch (Exception e){log.error("程序发生异常");throw  new RuntimeException(e);//手动回滚
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();}return "注册成功";}/*** 抛出IOException异常,事务没有自动进行回滚* @param name* @param password* @return*/@Transactional@RequestMapping("registry3")public String registry3(String name, String password) throws IOException {//用户注册Integer result = userService.registryUser(name,password);log.info("用户注册成功,影响行数"+ result);try {int a = 10/0;}catch (Exception e){log.error("程序发生异常");throw  new IOException(e);}return "注册成功";}

结果观察:
在这里插入图片描述


在这里插入图片描述


看数据库:
在这里插入图片描述

Spring 事务传播机制:

Spring的事务的隔离级别和Mysql还是一样的,由于Mysql上没有方法调来调去,但是我们编程时会有方法上的调用可以不同方法没有用同一个事务会有嵌套等等情况,所以我们的事务还有传播机制!


事务主要有7中传播机制,接下来比较重要的我会用代码来解释一下
在这里插入图片描述


我会用一个Controller调用两个service里的方法来进行说明

1.Propagation.REQUIRED:

默认的事务传播级别,如果存在一个事务我们就用这个事务,如果没有事务就创建一个事务,大家一起用

这里是引用


在这里插入图片描述
在这里插入图片描述


先看没有异常的情况:
请求:
在这里插入图片描述


结果两个表都已提交,就是用同一个事务
在这里插入图片描述在这里插入图片描述


发生异常:全部失败
在这里插入图片描述

在这里插入图片描述

7.Propagation.NESTED:

如果当前存在事务则创建新事务作为嵌套事务来运行,如果不存在事务则等价于Propagation.REQUIRED


没有异常情况:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述


结果:和情况一一样都得到提交
在这里插入图片描述

Propagation.NESTED和1.Propagation.REQUIRED的区别:

Propagation.NESTED的事务之间是父子关系,子事务发生异常会影响父事务,而Propagation.REQUIRED则不是


Propagation.NESTED情况下,当子事务发生异常,然后处理了(手动回滚事务)后就不会影响父事务和其他子事务:


在这里插入图片描述在这里插入图片描述


结果发生异常的事务没有提交,但是没有发生异常的事务得到提交!
在这里插入图片描述在这里插入图片描述

4.Propagation.REQUIRES_NEW:

如果当前存在有事务,就把这个事务挂起不用,自己创建新事务,事务之间相互独立,互不干扰


在这里插入图片描述
在这里插入图片描述在这里插入图片描述


结果:事务之间互不影响,一个事务提交成功,一个失败
在这里插入图片描述

在这里插入图片描述

6.Propagation.NEVER:

以非事务的方式运行,如果当前存在事务则抛出异常
,在这里插入图片描述
在这里插入图片描述


结果:直接抛出异常,自然两个都没有提交

http://www.dtcms.com/wzjs/568669.html

相关文章:

  • 企业网站搭建h5免费制作平台易企秀
  • 无锡网站建设价格专门做网络推广的公司
  • 佛山网站建设公司哪家最好宁国做网站
  • 手机网站建设 苏州珠海百度推广优化排名
  • 网站开发的业务风险互联网开发工程师证书
  • 机械技术支持中山网站建设免费做金融网站
  • 太原建站模板搭建建设网站需要准备哪些内容
  • 无线路由器做中继手机能连接但无法访问网站wordpress转静态页面
  • 广州新塘建网站燕郊医院网站建设
  • 情人节网站源码下载单位的网站的建设
  • 亳州电子商务网站建设公司公司网站未备案吗
  • 白沙网站建设wordpress获取友情链接
  • 双滦区seo整站排名网站引导页面制作的四个任务名称
  • 淄博网站seo公司wordpress目录介绍
  • 山西省建设局官方网站企业所得税征收方式
  • 微信菜单栏那些网站怎么做网站建设方面的书籍
  • 宏升温岭网站建设网络营销典型案例
  • 华为商城网站设计分析wordpress提取某个分类文章
  • 获得网页源码怎么做网站深圳网站建设公司元
  • qq登录网站授权怎么做企业网站源码 html5+xml
  • 栾城seo整站排名德州手机网站建设电话
  • 2017设计工作室做网站网站建设与实现 文献综述
  • 手机版网站建设淮安网站网站建设
  • 专注江苏网站建设广告公司企业简介怎么写
  • 安徽房产网站建设wordpress文章微信公众号推送
  • 做外贸推广的网站有哪些显而易见的解决方案 企业解决方案
  • 青岛网站关键字优化一个空间能放几个网站
  • 企业网站建设的文献网络营销策划方案范文
  • 韩国网站neverwordpress站点迁移
  • 多种大连网站建设自适应和响应式的区别