3.学习笔记--Spring-AOP总结(p39)-Spring事务简介(P40)-Spring事务角色(P41)-Spring事务属性(P42)

1.AOP总结:面向切面编程,在不惊动原始基础上为方法进行功能增强。
2.AOP核心概念:
(1)代理:SpringAOP的核心是采用代理模式
(2)连接点:在SpringAOP中,理解为任意方法的执行
(3)切入点:匹配连接点的式子,也是具有共性功能的方法描述
(4)通知:若干个方法的共性功能,在切入点处执行,最终体现为一个方法。
(5)切面:描述通知和切入点的对应关系
(6)目标对象:被代理的原始对象成为目标对象
3.切入点表达式格式
(1)动作关键词(访问修饰符 返回值 包名.类名/接口名 (参数)异常名)
(2)切入点表达式描述通配符(快速描述、范围描述)
*:匹配任意符号(常用)
… :匹配多个连续的任意符号(常用)
+:匹配子类类型
4.通知类型
(1)前置通知
(2)后置通知
(3)环绕通知(important)
1)环绕通知依赖形参ProceedingJoinPoint才能实现对原始方法的调用
2)环绕通知开源隔离原始方法的调用执行
3)环绕通知返回值设为Object类型
4)环绕通知开源对原始方法调用过程中出现的异常进行处理。
(4)返回后通知
(5)抛出异常后通知
补充:
(1)获取切入点方法的参数:
JointPoint:适合前置、后置、返回后、抛出异常后通知,设置为方法的第一个形参。
ProceedJointPoint:适用于环绕通知
(2)获取切入点方法返回值
返回后通知
环绕通知
(3)获取切入点方法运行异常信息
抛出异常后通知
环绕通知
5.Spring事务简介
(1)事务作用:在数据层保障一系列数据库操作(同成功同失败)
(2)Spring事务作用:在数据层或业务层保障一些列的数据库操作(同成功同失败)
接口是public interface platformTransactionManager(平台事务管理器)
方法有commit、rollback
接口实现类是public class DataSourceTransactionManager
例子:模拟银行账户间转账业务
需求:实现任意两个账户间转账操作
(A账号减钱,B账户加钱)
1)数据层提供基础操作,指定账户减钱(outMoney),指定账户加钱(inMoney)
2)业务层提供转账操作(transfer),调用加钱和减钱操作。
3)提供2个账号和操作金额执行转账操作
4)基于Spring整合MyBatis环境搭建上述操作
结果分析:
原本数据库中A,B的账户金额都是1000.
1)程序正常执行,账户金额A-B+
2)程序出现异常后,转账失败。异常之前操作成功,异常之后操作失败,整体业务失败。
(3)在业务层的接口,添加注解@Transaction
在这里插入图片描述
(4)在jdbc的配置中,通过Bean引入平台事务管理器的操作(DataSource dataSource)
在这里插入图片描述
(5)接口实现类先注释掉异常
(6)运行test,成功在这里插入图片描述
(7)验证使用Trasaction事务之后数据库,会不会出现同成功同失败的效果。
在这里插入图片描述

在这里插入图片描述
总结:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
6.Spring事务角色
事务管理员、事务协调员
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MybaticsConfig的SqlSessionFactory的DataSource和JdbcConfig的DataSource不是同一个,则不能运行成功。本次代码能运行成功,是因为他们是通过同一个数据源DataSource进行管理.
在这里插入图片描述
在这里插入图片描述
7.Spring事务属性
事务相关配置,案例:转账业务追加日志,事务传播行为
在这里插入图片描述
在这里插入图片描述

内存异常,运行异常才能回滚。IOException不回滚,出现这种情况,我们要在接口的事务中添加rollbackfor
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)案例:转账业务追加日志
需求:实现任意两个账户间转账操作,每次转账操作在数据库留痕。
(A减钱,B加钱,数据库记录日志)
1)基于转账操作案例添加日志模块实现数据库中记录日志
2)业务层转账操作(Transfer),调用减钱、加钱与记录日志功能,实现预期效果。
无论转账操作是否成功,都进行转账操作的日志留痕。
<1>REQUIRED(默认),事务管理员开启事务,事务协调员加入事务;事务管理员如果没有事务 ,事务协调员新建事务。(但是这个造成了如果在转账中出现了i/0异常,不管转账是否成功,日志的信息并不会在数据库出现,虽然金额没错保持原样,但是日志信息没有保存)
<2>REQUIRED_NEW,事务管理与开启事务,事务协调员可以新建事务;如果事务协调员没有事务,则事务协调员也会开启任务。所以要在业务层接口添加Spring事务,设置事务传播行为REQUIRES_NEW(需要新事务)
在这里插入图片描述

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

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

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

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

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

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

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

相关文章

数据库-day06

一、实验名称和性质 分类查询 验证 综合 设计 二、实验目的 1&#xff0e;掌握数据查询的Group by &#xff1b; 2&#xff0e; 掌握聚集函数的使用方法。 三、实验的软硬件环境要求 硬件环境要求&#xff1a; PC机(单机) 使用的软件名称、版本号以及模块&#xff1a; …

看门狗定时器(WDT)超时

一、问题 Arduino 程序使用<Ticker.h>包时&#xff0c;使用不当情况下&#xff0c;会导致“看门狗WDT超时” 1.1问题控制台报错 在串口监视器显示 --------------- CUT HERE FOR EXCEPTION DECODER ---------------Soft WDT resetException (4): epc10x402077cb epc2…

AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析

以下是 AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析&#xff1a; 1. 多Agent协同的定义与核心目标 多Agent系统&#xff08;MAS, Multi-Agent System&#xff09;&#xff1a; 由多个独立或协作的智能体&#xff08;Agent&#xff09;组成&#xff…

Wireshark TS | 异常 ACK 数据包处理

问题背景 来自于学习群里群友讨论的一个数据包跟踪文件&#xff0c;在其中涉及到两处数据包异常现象&#xff0c;而产生这些现象的实际原因是数据包乱序。由于这两处数据包异常&#xff0c;都有点特别&#xff0c;本篇也就其中一个异常现象单独展开说明。 问题信息 数据包跟…

【React】项目的搭建

create-react-app 搭建vite 搭建相关下载 在Vue中搭建项目的步骤&#xff1a;1.首先安装脚手架的环境&#xff0c;2.通过脚手架的指令创建项目 在React中有两种方式去搭建项目&#xff1a;1.和Vue一样&#xff0c;先安装脚手架然后通过脚手架指令搭建&#xff1b;2.npx create-…

深入浅出 NVIDIA CUDA 架构与并行计算技术

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、CUDA为何重要&#xff1a;并行计算的时代 2、NVIDIA在…

pytorch学习02

自动微分 自动微分模块torch.autograd负责自动计算张量操作的梯度&#xff0c;具有自动求导功能。自动微分模块是构成神经网络训练的必要模块&#xff0c;可以实现网络权重参数的更新&#xff0c;使得反向传播算法的实现变得简单而高效。 1. 基础概念 张量 Torch中一切皆为张…

Java虚拟机(JVM)平台无关?相关?

计算机的概念模型 计算机实际上就是实现了一个图灵机模型。即&#xff0c;输入参数&#xff0c;根据程序计算&#xff0c;输出结果。图灵机模型如图。 Tape是输入数据&#xff0c;Program是针对这些数据进行计算的程序&#xff0c;中间横着的方块表示的是机器的状态。 目前使…

satoken的奇奇怪怪的错误

发了 /user/getBrowseDetail和/user/getResponDetail&#xff0c;但为什么进入handle里面有三次&#xff1f;且第一次的handle类型是AbstractHandleMapping$PreFlightHttpRequestHandlerxxx,这一次进来的时候flag为false&#xff0c;StpUtils.checkLogin抛出了异常 第二次进来的…

【KWDB 创作者计划】_上位机知识篇---SDK

文章目录 前言一、SDK的核心组成API(应用程序接口)库文件(Libraries)开发工具文档与示例依赖项与环境配置二、SDK的作用简化开发流程确保兼容性与稳定性加速产品迭代功能扩展与定制三、SDK的典型应用场景硬件设备开发操作系统与平台云服务与API集成游戏与图形开发四、SDK与…

golang处理时间的包time一次性全面了解

本文旨在对官方time包有个全面学习了解。不钻抠细节&#xff0c;但又有全面了解&#xff0c;重点介绍常用的内容&#xff0c;一些低频的可能这辈子可能都用不上。主打一个花最少时间办最大事。 Duration对象: 两个time实例经过的时间,以长度为int64的纳秒来计数。 常见的durati…

PyCharm Flask 使用 Tailwind CSS 配置

使用 Tailwind CSS 步骤 1&#xff1a;初始化项目 在 PyCharm 终端运行&#xff1a;npm init -y安装 Tailwind CSS&#xff1a;npm install -D tailwindcss postcss autoprefixer初始化 Tailwind 配置文件&#xff1a;npx tailwindcss init这会生成 tailwind.config.js。 步…

【英语语法】基本句型

目录 前言一&#xff1a;主谓二&#xff1a;主谓宾三&#xff1a;主系表四&#xff1a;主谓双宾五&#xff1a;主谓宾补 前言 英语基本句型是语法体系的基石&#xff0c;以下是英语五大基本句型。 一&#xff1a;主谓 结构&#xff1a;主语 不及物动词 例句&#xff1a; T…

隔离DCDC辅助电源解决方案与产品应用科普

**“隔离”与“非隔离的区别** 隔离&#xff1a; 1、AC-DC&#xff0c;也叫“一次电源”&#xff0c;人可能会碰到的应用场合&#xff0c;起安全保护作用&#xff1b; 2、为了抗干扰&#xff0c;通过隔离能有效隔绝干扰信号传输。 非隔离&#xff1a; 1、“安全特低电压&#…

DS-SLAM 运动一致性检测的源码解读

运动一致性检测是Frame.cc的Frame::ProcessMovingObject(const cv::Mat &imgray)函数。 对应DS-SLAM流程图Moving consistency check的部分 把这个函数单独摘出来&#xff0c;写了一下对两帧检测&#xff0c;查看效果的程序&#xff1a; #include <opencv2/opencv.hpp…

安全测试的全面知识体系及实现路径

以下是安全测试的全面知识体系及实现路径,结合最新工具和技术趋势(截至2025年): 一、安全测试核心类型与工具 1. 静态应用安全测试(SAST) 知识点: 通过分析源代码、字节码或二进制文件识别漏洞(如SQL注入、缓冲区溢出)支持早期漏洞发现,减少修复成本,适合白盒测试场…

GPT-4o Image Generation Capabilities: An Empirical Study

GPT-4o 图像生成能力:一项实证研究 目录 介绍研究背景方法论文本到图像生成图像到图像转换图像到 3D 能力主要优势局限性与挑战对比性能影响与未来方向结论介绍 近年来,图像生成领域发生了巨大的变化,从生成对抗网络 (GAN) 发展到扩散模型,再到可以处理多种模态的统一生成架…

Redis之全局唯一ID

全局ID生成器 文章目录 全局ID生成器一、全局ID生成器的定义定义核心作用 二、全局ID生成器需满足的特征1. 唯一性&#xff08;Uniqueness&#xff09;​2. 高性能&#xff08;High Performance&#xff09;​3. 可扩展性&#xff08;Scalability&#xff09;​4. 有序性&#…

nginx中的代理缓存

1.缓存存放路径 对key取哈希值之后&#xff0c;设置cache内容&#xff0c;然后得到的哈希值的倒数第一位作为第一个子目录&#xff0c;倒数第三位和倒数第二位组成的字符串作为第二个子目录&#xff0c;如图。 proxy_cache_path /xxxx/ levels1:2 2.文件名哈希值

静态时序分析STA——8.1 时序检查(建立时间检查)

文章目录 一、时序路径组二、建立时间检查1. 触发器到触发器路径1&#xff09;时钟单元UCKBUF0的延迟计算2&#xff09;时钟源延迟&#xff08;clock source latency&#xff09; 2. 输入到触发器路径1) 虚拟时钟的输入路径2) 具有实际时钟的输入路径 3. 触发器到输出路径4. 输…