黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

  指路(1)(2)(3)(4)(5)👇

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理_tlias智能学习辅助系统的需求分析-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/YOYU_/article/details/135476566黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(2)员工管理|分页查询、分页查询(带条件)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/YOYU_/article/details/135491233黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(3)员工管理|新增员工、文件上传-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/YOYU_/article/details/135513546

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(4)员工管理|修改员工、配置文件-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/YOYU_/article/details/135535512

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(5)登录认证-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/YOYU_/article/details/135539832

一、解散部门

1.需求分析:

  • 删除部门在之前的代码里面只是根据部门ID删除该部门的信息,但解散部门,还需要删除掉该部门下的所有员工信息,所以在EmpMapper.java中,新增一个delete方法,根据部门ID删除员工信息。
  • 解散部门时,无论成功失败,都要记录操作日志到数据库库表中。

2.@Transactional:

  • 位置:业务(service)层的方法上、类上、接口上,更多加载业务层执行多次数据访问操作的增删改操作上。
  • 作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务。

3.rollbackFor:

默认情况下,只有出现RuntimeExcepetion才会回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务。

 @Transactional(rollbackFor = Exception.class)//spring事务管理

4.propagation:

事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。

  • REQUIRED:大部分情况下都是用该传播行为即可。
  • REQUIRES_NEW:当我们不希望事务之间相互影响时,可以使用该传播行为。比如:下订单前需要记录日志,不论订单保存成功与否,都需要保证日志记录能够记录成功。

删除前的emp数据表:

删除后的emp数据表:

日志记录:

二、AOP基础及进阶

1.AOP:

Aspect Oriented Programming(面向切面编程、面向方面编程),即面向特定方法编程

2.快速入门:

统计各个业务层方法执行耗时

3.核心概念:

  • 连接点:JoinPoint,可以被AOP控制的方法(暗含方法执行时的相关信息)
  • 通知:Advice,指那些重复的逻辑,也就是共性功能(如,统计方法执行耗时)
  • 切入点:PointCut,匹配连接点的条件,通知仅会在切入点方法执行时被应用(用来确定在那些地方应用该通知)
  • 切面:Aspect,描述通知与切入点的对应关系
  • 目标对象:Target,通知所应用的对象

@PointCut:将公共的切点表达式抽取出来,需要用到时引用该切点表达式即可。

  • private:仅能在当前切面类中引用该表达式
  • public:在其他外部的切面类中也可以引用该表达式

4.通知类型:

  • @Before:前置通知,在目标方法运行之前被执行

  • @After:后置通知,在目标方法运行之后被执行,无论是否异常都会执行

  • @Around:环绕通知,重点

    • 环绕通知需要自己调用ProceedingJoinPoint.proceed()来让原始方法执行,其他通知不需要考虑目标方法执行
    • 环绕通知的返回值,必须指定为Object,来接收原始方法的返回值
  • @AfterReturning:返回后通知,在目标方法运行之前被执行,有异常不会执行,了解

  • @AfterThrowing:异常后通知,在目标方法发生异常后被执行,了解

5.通知顺序:

默认情况:

不同切面类中,默认按照切面类的类名字母排序:

  • 目标方法前的通知方法:字母排名靠前的先执行
  • 目标方法后的通知方法:字母排名靠前的后执行

@Order:加在切面类上控制顺序

  • 目标方法前的通知方法:数字小的先执行
  • 目标方法后的通知方法:数字小的后执行

6.切入点表达式:

作用:来决定项目中的那些方法需要加入通知

常见形式:

  • execution:根据方法的返回值、包名、类名、方法名、方法参数等信息来匹配

  • @annotation:用于匹配标识有特定注解的方法

    • @Retention:用来描述注解何时生效(运行时有效)
    • @Target:表示当前注解能够作用在哪些地方(类还是方法)

7.连接点:

在Spring中用JoinPoint抽象了连接点,用它可以获得方法执行时的相关信息,如目标类名、方法名、方法参数等。

  • 对于@Around通知,获取连接点信息只能使用ProceedingJoinPoint
  • 对于其他四种通知,获取连接点信息只能使用JointPoint,它是ProceedingJoinPoint的父类型

三、AOP案例:

1.需求:

将案例中增删改相关接口的操作日志记录到数据库表中。其中,日志信息包含:操作人、操作时间、执行方法的全类名、执行方法名、方法运行时参数、返回值、方法执行时长

2.准备:

  • 在案例工程中引入AOP的起步依赖
  • 导入相关数据库表结构,引入实体类

3.编码:

  • 自定义注解@Log
  • @Aspect:定义切面类,完成记录操作日志的逻辑

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】Qt配置

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt SDK下载 二、配置环境变量 三、新建工程(QWidget) 四、QWidg…

今年第一个互联网医疗IPO,健康之路靠医药零售“再上一层楼”?

提起互联网医疗&#xff0c;大家最先想到的或许是阿里健康、京东健康、丁香医生等“名号响亮”的公司。事实上&#xff0c;健康之路开辟互联网医疗之路的时间比这些巨头们更早。据悉&#xff0c;2001年&#xff0c;健康之路就将互联网和医院资源结合&#xff0c;是第一批开展线…

Halcon基于灰度值的模板匹配

Halcon基于灰度值的模板匹配 基于灰度值的模板匹配是最经典的模板匹配算法&#xff0c;也是最早提出来的模板匹配算法。这种算法的根本思想是&#xff0c;计算模板图像与检测图像之间的像素灰度差值的绝对值总和&#xff08;SAD方法&#xff09;或者平方差总和&#xff08;SSD…

【C语言基础考研向】04整型进制转换

整型常量的不同进制表示 计算机中只能存储二进制数&#xff0c;即0和1&#xff0c;(而在对应的物理硬件上则是高、低电平。为了更方便地观察内存中的二进制数情况&#xff0c;除我们正常使用的十进制数外&#xff0c;计算机还提供了十六进制数和八进制数。 下面介绍不同进制数的…

【从0上手cornerstone3D】如何加载nifti格式的文件

在线演示 支持加载的文件格式 .nii .nii.gz 代码实现 npm install cornerstonejs/nifti-volume-loader// ------------- 核心代码 Start------------------- // 注册一个nifti格式的加载器 volumeLoader.registerVolumeLoader("nifti",cornerstoneNiftiImageVolu…

集合框架(二)

List集合 特点、特有方法 List集合因为支持索引&#xff0c;所以多了很多于索引相关的方法&#xff0c;当然&#xff0c;Collection的功能List也都继承了。 方法名称说明void add&#xff08;int index&#xff0c;E element&#xff09;在此集合中的指定位置插入指定的元素…

HTML---Jquery选择器

文章目录 目录 文章目录 本章目标 一.Jquery选择器概述 二.Jquery选择器分类 基本选择器 层次选择器 属性选择器 三.基本过滤选择器 练习 本章目标 会使用基本选择器获取元素会使用层次选择器获取元素会使用属性选择器获取元素会使用过滤选择器获取元素 …

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-16 Robust Controller非线性鲁棒控制器

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-16 Robust Controller非线性鲁棒控制器 1. Slide Control 滑膜控制2 High Gain High Frequency3. 三种鲁棒控制器的比较如何分析控制器 Robust Control : tp achieve rob…

云服务器基于Centos创建个人云盘实践经验分享

文章目录 安装运行Cloudreve安装ossfscentos更换yum源 配置ossfs挂载oss存储配置开机启动 配置cloudreve推荐阅读 安装运行Cloudreve 执行如下命令&#xff0c;下载cloudreve安装包。 wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/cloudreve_3.3.1_linux_amd64.tar…

QT5构建套件检测不到MSVC2017解决方法

文章目录 前言一、本地环境二、现象三、解决办法 前言 记录一下 QT5 构建套件检测不到 MSVC2017 解决方法 。Qt Creator MSVC开发环境搭建&#xff08;Qt Creator 集成工具 MSVC编译&#xff09; 一、本地环境 电脑操作系统&#xff1a;Win11Qt 版本&#xff1a;Qt 5.14.2 …

七陌API对接实战:外呼接口及通话记录推送

通过白码低代码开发平台对接七陌外呼接口&#xff0c;实现选择客户进行外呼&#xff0c;并保存通话记录的功能。 外呼接口实现&#xff1a; 官方接口文档&#xff1a;http://developer.7moor.com/v2docs/dialout/ 1、对接数据查询 向七陌商务索取到七陌用户中心账号密码&a…

【C语言】详解编译和链接

1.翻译环境和运行环境 在ANSIC的任何一种实现中&#xff0c;存在两个不同的环境 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令第2种是执行环境&#xff0c;它用于实际执行代码 2.翻译环境 翻译环境是怎么将源代码转换为可执行的机器指令的呢&…

openssl3.2 - 官方demo学习 - guide - tls-client-block.c

文章目录 openssl3.2 - 官方demo学习 - guide - tls-client-block.c概述记录问题server和client IP都为localhostserver和client IP都为127.0.0.1想到解决问题的方法1想到解决问题的方法2笔记END openssl3.2 - 官方demo学习 - guide - tls-client-block.c 概述 tls 客户端 官…

厨卫产品画册的制作全攻略

厨卫产品画册的制作是一项复杂而又重要的任务&#xff0c;它不仅关乎产品的展示&#xff0c;更关乎品牌形象的塑造。一个好的厨卫产品画册能够吸引潜在客户的注意力&#xff0c;提升品牌知名度&#xff0c;同时也能为销售团队提供有力的销售工具。 一、明确目标与定位 在制作厨…

记一次手动查杀Linux服务器挖矿木马

目录 前言排查开始系统占用进程排查网络统计 深入排查修复指令篡改隐藏程序查找进程信息查看 后续清理删除相关文件systemd计划任务用户 原因追溯 前言 我实验室的座位隔壁放着一台其他课题组管理的服务器&#xff0c;平时利用率不高。那天我发现服务器的风扇转速拉满持续了至…

test-02-test case generate 测试用例生成 EvoSuite 介绍

拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 拓展阅读 自动生成测试用例 什么…

企业网络扫描程序中需要的功能

网络扫描程序已成为每个 IT 管理员抵御安全漏洞的第一道防线不可或缺的一部分。使用正确的网络扫描程序工具进行有效的网络侦察和诊断&#xff0c;使管理员能够查明可能升级为安全风险和网络事故的网络问题。典型的网络扫描程序可以与 IP 扫描程序配合使用&#xff0c;按顺序扫…

LangChain 75 打造你自己的OpenAI + LangChain网页应用

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

zabbix实验

目录 一、zabbix 自动发现与自动注册 1、zabbix 自动发现 ①关闭防火墙和安全机制 ②在服务端和客户端上配置 hosts 解析 ③在 Web 页面配置自动发现 2、zabbix 自动注册 ①环境准备 ②在服务端和客户端上配置 hosts 解析 ③修改 zabbix-agent2 配置文件 ④在 Web 页…

UMind:从功能绑定到自如切换,用AI重塑摄像机价值

随着人工智能技术的迅速发展&#xff0c;AI摄像机的使用越来越广泛。虽然AI赋予了摄像机更加丰富的功能&#xff0c;但是在实际应用中仍然存在诸多不便。 为了解决以上问题&#xff0c;悠络客提出了【软件定义硬件】的创新理念&#xff0c;致力于让摄像头像智能手机那样&#x…