描述一下网站建设的基本流程qq浏览器网页版入口

web/2025/10/8 11:56:35/文章来源:
描述一下网站建设的基本流程,qq浏览器网页版入口,2023年ppt模板免费,成都到西安开车要多久一、事务回顾 回顾地址#xff1a; 深入理解数据库事务#xff08;超详细#xff09;_数据库事务操作_Maiko Star的博客-CSDN博客 事务#xff1a; 是一组操作的集合#xff0c;是一个不可分割的工作单位#xff0c;这些操作要么同时成功#xff0c;要么同时失败 事…一、事务回顾 回顾地址  深入理解数据库事务超详细_数据库事务操作_Maiko Star的博客-CSDN博客 事务 是一组操作的集合是一个不可分割的工作单位这些操作要么同时成功要么同时失败  事务的操作 开启事务一组操作开始前开启事务start transaction / begin提交事务这组操作全部成功后提交事务commit回滚事务中间任何一个操作出现异常回滚事务rollback SpringBoot中的事务是指一组操作数据库的动作集合事务是数据库的逻辑工作单位事务中包含的各操作要么都做要么都不做。 二、SpringBoot事务的实现方式 1声明式事务管理推荐 声明式事务管理建立在 AOP 之上其本质是对方法前后进行拦截然后在目标方法开始之前创建或者加入一个事务在执行目标方法之后根据执行的情况提交或者回滚事务。声明式事务管理不需要入侵代码通过 Transactional 就可以进行事务的操作推荐使用。 在方法上添加Transactional注解表示该方法需要被事务管理。使用Propagation属性指定事务的传播行为默认是REQUIRED即如果当前存在事务则加入该事务如果没有事务则新建一个事务。使用Isolation属性指定事务的隔离级别默认是数据库的默认隔离级别。使用readOnly属性指定事务是否为只读如果为只读则在事务中不允许进行写操作默认为false。使用rollbackFor属性指定哪些异常触发事务回滚默认为RuntimeException。 示例代码 Service Transactional public class UserService {Autowiredprivate UserRepository userRepository;public User createUser(User user) {// 业务逻辑return userRepository.save(user);}public void updateUser(User user) {// 业务逻辑userRepository.save(user);} } 2编程式事务管理 编程式事务管理使用 TransactionTemplate或者直接使用底层的 PlatformTransactionManager。对于编程式事务管理spring 推荐使用 TransactionTemplate。 使用TransactionTemplate手动控制事务的开始和提交/回滚。在execute方法内部执行需要被事务管理的业务逻辑。 示例代码 Service public class UserService {Autowiredprivate TransactionTemplate transactionTemplate;Autowiredprivate UserRepository userRepository;public User createUser(User user) {return transactionTemplate.execute(status - {try {// 业务逻辑return userRepository.save(user);} catch (Exception e) {status.setRollbackOnly();throw e;}});}public void updateUser(User user) {transactionTemplate.execute(status - {try {// 业务逻辑userRepository.save(user);} catch (Exception e) {status.setRollbackOnly();throw e;}return null;});} } 三、Transactional 注解介绍及使用 3.1 Transactional 作用范围 Fransactional 可以用来修饰方法或类 修饰方法时表示当前的方法开启事务需要注意只能应用在 public 方法上。修饰类时表示当前该类下面的所有被 public 修饰的方法都开启事务。默认会回滚运RuntimeException 及其子类 3.2 Transactional 参数说明 参数作用value当配置了多个事务管理器时可以使用该属性指定选择哪个事务管理器。transactionManager当配置了多个事务管理器时可以使用该属性指定选择哪个事务管理器。propagation事务的传播行为默认值为 Propagation.REQUIRED。isolation事务的隔离级别默认值为 Isolation.DEFAULT。timeout事务的超时时间默认值为-1表示没有超时时间。如果超过该超时时间显示但事务还没有完成则自动回滚事务。readOnly指定事务是否为只读事务默认值为 false。为了忽略那些不需要事务的方法比如读取数据可以设置为 true。rollbackFor用于指定能够被触发事务回滚的异常类型可以指定多个异常类型。rollbackForClassName用于指定能够被触发事务回滚的异常类型可以指定多个异常类型。noRollbackFor抛出异常的类型不回滚事务也可以指定多个异常类型。noRollbackForClassName抛出异常的类型不回滚事务也可以指定多个异常类型。 参数名称功能描述readOnly该属性用于设置当前事务是否为只读模式设置为 true 表示只读false 表示可读可写默认情况下是 false。 例如 Transactional(readOnly true)rollbackFor该属性用于设置需要进行回滚的异常类数组当方法中抛出指定异常数组中的异常时则进行事务回滚。 例如 指定单一异常类Transactional(rollbackFor Exception.class) 指定多个异常类Transactional(rollbackFor {RuntimeException.class,Exception.class})rollbackForClassName该属性用于设置需要进行回滚的异常类名称数组当方法中抛出指定异常名称数组中的异常时则进行事务回滚。 例如 指定单一异常类名Transactional(rollbackForClassName RuntimeException) 指定多个异常类名Transactional(rollbackForClassName {RuntimeException,Exception})noRollbackFor该属性用于设置不需要进行回滚的异常类数组。使用方法同 rollbackFornoRollbackForClassName该属性用于设置不需要进行回滚的异常类名称数组。使用方法同 rollbackForClassNamepropagation该属性用于设置事务的传播行为。isolation该属性用于设置事务的隔离级别。timeout该属性用于设置事务的超时秒数默认值为 -1 表示永不超时。 3.3 Transactional 出现异常注意事项 1.Transactional 只能放在 public 修饰的方法上。 2.Transactional不加任何参数时默认会回滚运RuntimeException 及其子类其它范围之外的异常 Spring 不会帮我们去回滚数据。 3.Transactional(rollbackFor Exception.class)如果加上rollbackFor 参数会回滚所指定的异常类前提下一定要在catch中抛出相关异常类否则事务还是失效的。 4.Transactional 在异常被捕获的情况下不会进行事务的自动回滚。 默认情况下Spring 中的事务如果遇到运行时异常事务是会进行回滚的但遇到非运行时异常事务不会自动回滚。可以设置 rollbackFor 来解决非运行时异常不会被回滚的问题。示例代码如下 RequestMapping(/test3) Transactional public String test3(RequestParam String username, RequestParam String pwd) {// 插⼊数据库int result userService.addUser(username, pwd);try {// 执⾏了异常代码int i 10 / 0;} catch (Exception e) {}以上代码虽然出现了算数异常但是由于主动捕获了且没有进行抛出因此不会进行事物的回滚数据库中会插入该条数据。 如果要解决出现异常事务不能自动回滚的问题以下提供两种解决方案 1方案一对于捕获的异常事务是不会自动回滚的因此可以在捕获异常后主动将该异常重新抛出。默认只回滚RunTimeException故我们这里演示抛出RunTimeException示例代码如下 RequestMapping(/test3) Transactional public String test3(RequestParam String username, RequestParam String pwd) {// 插⼊数据库int result userService.addUser(username, pwd);try {// 执⾏了异常代码int i 10 / 0;} catch (Exception e) {// 将异常重新抛出throw new RunTimeException();}return 测试完成!; }方案二推荐手动去回滚事务可以通过方法 TransactionAspectSupport.currentTransactionStatus() 得到当前的事务然后设置回滚方法 setRollbackOnly 就可以实现回滚。示例代码如下 RequestMapping(/test3) Transactional public String test3(RequestParam String username, RequestParam String pwd) {// 插⼊数据库int result userService.addUser(username, pwd);try {// 执⾏了异常代码int i 10 / 0;} catch (Exception e) {// 手动回滚 TransactionStatus transactionStatus TransactionAspectSupport.currentTransactionStatus();transactionStatus.setRollbackOnly();}return 测试完成!; }使用了TransactionAspectSupport类来获取当前的事务状态并通过调用setRollbackOnly()方法手动回滚事务。这是Spring框架中一种手动回滚事务的方式。 3.4  Transactional 失效的情况排查 问题方法上添加了 Transactional 注解为什么没有进行回滚 排查一是否使用了 try catch 进行了异常捕获并且捕获之后没有通过 throw new RuntimeException(); 进行异常抛出。因为对于 spring aop 异常捕获原理被拦截的方法需要显示的抛出异常并不能进行任何处理这样 aop 代理才能捕获到方法的异常才能进行事务的回滚操作默认清空下aop 只捕获 RuntimeException 的异常但是可以通过配置来捕获特定的异常并回滚。 排查二是否使用了 try catch 进行了异常信息捕获如果是可以在 catch 语句中添加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()手动回滚事务 排查三排查是不是产生了自调用的问题。在 spring 的 aop 代理下只有目标方法被外部调用目标方法才由 spring 生成的代理对象来管理若统一类中的其他没有用 Transactional 注解进行修饰的方法内部调用了 用 Transactional 注解进行修饰的方法有 Transactional 注解的方法的事务将会被忽略不发生回滚。周氏概括即没有使用Transactional 注解修饰的方法调用了用 Transactional 注解进行修饰的方法将会导致事务失效 ​ 备注如果确实需要这样操作只需要把 Transactional 注解加在当前的类名上就可以了 或者使用 AspectJ 取代 spring aop 进行代理。 排查四Transactional 注解只被应用到 public 修饰的方法上如果在 protected、private等修饰的方法上Transactional 注解不会报错但是这个注解的将不会生效。 排查五Transactional 注解不会对当前修饰的方法的处理异常的子方法生效。比如我们在方法 A 中声明了 Transactional 注解但是 A 方法的内部调用的 方法 B 和 方法 C其中方法 B 进行了 数据库的操作但是该部分的异常被方法 B 进行了处理并且没有进行 抛出这样的话事务是不会生效的。如果想要事务生效需要将子方法的事务控制交给调用的方法在子方法中使用 Transactional注解并通过 rollbackFor 指定定回滚的异常 或者直接将异常抛出。周氏概括使用Transactional 注解修饰的A方法 调用了 没有用Transactional 注解修饰的B方法但是B方法使用try catch处理了异常这将导致事务失效。使用Transactional 注解修饰的A方法 调用了 没有用Transactional 注解修饰的B方法但是B方法将异常向上抛出或使用Transactional注解并通过 rollbackFor 指定定回滚的异常事务不会失效。 ​ 备注在使用事务的时候最好把子方法的异常进行抛出交给调用的方法进行处理。 四、SpringBoot事务传播机制了解 4.1 事务传播机制的定义 Spring 事务传播机制定义了多个包含了事务的方法在相互调用时事务是如何在这些方法之间进行传递的。 4.2 事务传播机制的作用 事务隔离级别是保证多个并发事务执行的可控性而事务传播机制是保证一个事务在多个调用方法之间的可控性。事务隔离级别是解决多个事务同时调用数据库的问题而事务传播机制是解决一个事务在多个节点中传递的问题。 4.3 Spring 事务传播机制有7种 Propagation.REQUIRED 默认的事务传播机制它表示如果当前存在事务则加入该事务如果当前没有事务则创建一个新的事务。Propagation.SUPPORTS 如果当前存在事务则加入该事务如果当前没有事务则以非事务的方式继续运行。Propagation.MANDATORY 如果当前存在事务则加入该事务如果当前没有事务则抛出异常。Propagation.REQUIRES_NEW 表示创建一个新的事务如果当前存在事务则把当前事务挂起。也就是说不管外部方法是否开启事务该传播机制修饰的内部方法会新开启自己的事务且开启的事务相互独立互不干扰。Propagation.NOT_SUPPORTED 以非事务方式运行如果当前存在事务则把当前事务挂起。Propagation.NEVER 以非事务方式运行如果当前存在事务则抛出异常。Propagation.NESTED 如果当前存在事务则创建一个事务作为当前事务的嵌套事务来运行如果当前没有事务则该取值等价于 Propagation.REQUIRED。 嵌套事务和加入事务的区别 嵌套事务回事有问题的事务但主事务不受影响。加入事务如果任意一个方法出现异常那么整个事务会回滚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山东华建建设有限公司网站网站的按钮怎么做

效果展示图 使用插件 Formik 负责表单校验、监听表单提交、数据校验错误信息展示 Yup 负责表单校验规则 分析页面 从上述的展示图我们可以看到的主要元素有:输入框、单选按钮和按钮。其中生成的密码长度不可能很大也不可能为负数和 0,所以我们可以限…

建设网站的功能定位网站建设与推广的策划方案

当为你的下一个设计方案选择正确的核心处理器件时,你应该考虑哪些因素呢?本文将对MPU和MCU做些对比分析,并以此对器件的选择给出一些指导性建议和意见。 本文引用地址:http://www.eepw.com.cn/article/164617.htm 每当在为新设计选择正确合理…

哪个网站做照片书最好看做自媒体挣钱的网站有哪些

工厂设计模式和策略设计模式这次我想谈谈策略设计模式 。 通过这种方式,我开始撰写有关行为设计模式的文章。 这种模式表示对象之间的某些交互模式,以使代码更灵活且组织得更好。此方法的最本质点是对象之间的松散耦合。 当您的应用程序中有多个实现目的…

网站的建设流程个性定制网站

解决办法: 临时变更wget的UA wget -U "浏览器的useragent" 下载地址永久变更Wget(未测试) 修改配置文件/etc/wgetrc,添加下面这一行: header User-Agent: "浏览器的useragent"上面这个配置后…

杭州网站设计 site互联网装修公司排行榜

我最近在做一个项目的时候需要把树莓派上的摄像头拍摄的图片实时传输到我的PC上我想通过socket完成这个功能我找了找网上的代码,好多都是python2.x版本的,或者是图片总是传不过来的,只能自己写了一个我先附上我的源代码,再来聊一聊…

创业 建网站十大ppt模板免费下载网站

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 迭代器在Python中是一种基本但却经常被忽视的概念。它们是Python处理集合数据的基石,无论是简单的列表还是复杂的自定义数据结构。理…

中创动力网站建设做网站的软件有哪些

现象描述:删除某个程序时(通过‘程序’列表中将该应用移动到废纸篓里),该应用程序正在运行中,删除过程该程序未提示正在运行中,仅仅删除了图标(在此吐槽下该程序的交互,产品没有考虑…

设计网站推荐设计酷站网站 目录 结构

上一篇主要对三维GIS的基础数据和三维模型进行了一点说明,本篇将接着聊剩下的部分,主要是三维GIS平台能够支持什么样的场景展示,并来对平台的应用进行一些介绍。没看过上篇的朋友可以先了解一下再看本篇:MonoLog:三维G…

网站的域名怎么起网页与网站的关系

页面跳转总结 JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是二者是有很大的区别的,分条来说,有以下几点:①response.sendRedirect(url)-----重定向到…

html5 微网站模版百度站长平台快速收录怎么弄

文章目录 一、项目背景二、项目演示三、项目介绍B系统主要功能1. 注册登录重置密码2. 权限管理3. 项目管理4.客服管理 C系统主要功能1. 问答组件2. 主题色定制3. 类微信时间显示控件及智能tip提示4. 无障碍阅读4. 丰富的输入框组件5. 人工客服6. 聊天记录分表记录与查询 四、项…

网站APP推广做网站用

近期购入了Hostease的Windows虚拟主机产品,由于进入他们主机Plesk面板后查看全都是英文的,对于英文也不是很懂,尤其是像这种专业 词汇的更不明白。因此这边咨询了Hostease的技术支持,寻求帮助了解到可以Plesk面板可以切换语言的&a…

vs做的网站如何域名能卖多少钱一个

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】4. 图像的叠加与混合 文章目录【youcans 的图像处理学习课】4. 图像的叠加与混合1. 图像的加法运算基本例程:1.22 图像…

深圳网站建设有免费的吗教育类网站建设

目录 1.统一异常处理 2.统一记录日志 1.统一异常处理 在 HomeController 类中添加请求方法(服务器发生异常之后需要统一处理异常,记录日志,然后转到 500 页面,需要人工处理重定向到 500 页面,提前把 500 页面请求访问…

前端个人网站模板国内最新新闻摘抄30字

创建正点原子的TF-A工作区,目的是想查看正点原子的设备树文件“stm32mp157d-atk.dts”和设备树头文件“stm32mp157d-atk.dtsi”,了解设备树是什么样子,为后期基于“ST公司的源码”创建自己的设备树提供参考,同时也是为了学习移植u…

商城网站建设的步骤阿里云备案多个网站

卓金武——从数学建模到MATLAB 2013-9-4 09:48| 发布者: ilovematlab| 查看: 9647| 评论: 40 摘要: 人物简介——卓金武(Steven),MathWorks公司中国区应用工程师。在科学计算、定量优化、数学建模和数据挖掘领域拥有8年经验。曾3次获全国大学…

深圳制作网站的公司wordpress文章归档 文章显示数量

摄像机标定的目的是为了求解摄像机的内、外参数 求解投影矩阵M 通过建立特殊的场景,我们能过得到多对世界坐标和对应图像坐标 根据摄像机几何可知 : ,M是一个3*4的矩阵,令 通过一对点可以得到两个方程组,M中一共有11个…

中小型网站建设报价网站系统开发流程

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点&a…

查企企官方网站免费在线代理网页

作者推荐 视频算法专题 本文涉及知识点 数学 网格 状态压缩 LeetCode:782 变为棋盘 一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置。 返回 将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换&am…

简易的小企业网站建设政协网站建设要求

空间 样本空间 就是属性的所有可能情况,包括了一切可能出现或不可能出现的所有样本情况 版本空间&假设空间 假设空间就是在样本空间的基础上,给所有属性都加了一个通配符,表示任意即可;以及加上了一个空集,表示…

app与微网站的区别是什么意思电子商务网站建设初学视频教程

在做项目时&#xff0c;随着需求的不断增加&#xff0c;我们的代码文件会越来越大&#xff0c;但是在打包时&#xff0c;在 Node 中通过 JavaScript 使用内存的大小却是有限制的。于是&#xff0c;今天打算部署代码时&#xff0c;报错了: <--- JS stacktrace ---> JS st…