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

AOP 笔记

AOP【面向切面编程】

作用:在不惊动原始设计的基础上进行功能增强。

无侵入式编程
连接点:程序执行的任意位置,SpringAOP中,理解为方法的执行。
在这里插入图片描述
切入点:匹配连接点的式子,要追加功能的方法
在这里插入图片描述

通知(写在通知类中):共性功能,在切入点执行的操作。

  • SpringAOP中,最终以方法的形式呈现
    通知类:定义通知的类
    切面(Aspect):描述通知的共性功能和切入点的关系
步骤

在这里插入图片描述
代码实现步骤:
1、导入相关坐标
2、定义dao接口与实现类
3、定义通知类
4、@Pointcut注解定义切入点
在这里插入图片描述
5、@Before等注解绑定切入点与通知关系
6、@Component @Aspect告诉程序通知类用来AOP
7、@EnaleAspectJAutoProxy : 告诉程序注解开发AOP;开启功能

AOP工作流程

  • Spring容器启动
  • 读取所有切面配置中的切入点,只读取已经配置了(建立联系的)切入电
  • 初始化bean,判断bean对应的类中的方法是否匹配到任意切点
  • 匹配失败,创建对象
  • 匹配成功,创建目标对象的代理对象 (代理模式实现)
  • 获取bean执行方法
    在这里插入图片描述
    tips:AOP重写了toString
切入点表达式
  • 可以使用通配符
    在这里插入图片描述
AOP编码技巧
  • 安装AOP标准规范开发
  • 描述切入点描述接口
  • 在这里插入图片描述
  • 返回值对于增删改使用精确类型加速匹配;查询类使用*通配快速匹配
  • 包名书写避免…匹配,常用*做单个包描述匹配,或精确匹配
  • 接口名/类名书写名称与模块相关的采用*匹配,eg.UserService书写成*Service,绑定业务层接口
  • 方法名书写以动词进行精准匹配,名词采用匹配。eg. getById书写成getBy, selectAll书写成selectAll
  • 不使用异常作为匹配规则
AOP通知类型
  • 前置通知
  • 后置通知
  • 环绕通知
  • 返回后通知
  • 抛出异常后通知
环绕通知
  • @Around
    在这里插入图片描述
    有返回值情形
    在这里插入图片描述
    在这里插入图片描述

AOP通知获取数据

  • 获取参数
  • 获取返回值
  • 获取异常
    在这里插入图片描述

Spring事务

  • 事务管理员:发起事务方,在Spring中,通常指代业务层开启事务的方法。
  • 事务协调员:加入事务方,在Spring中,通常指代数据层方法,也可以是业务层方法。
rollbackFor:设置事务回滚异常

相关文章:

AOP 笔记

AOP【面向切面编程】 作用:在不惊动原始设计的基础上进行功能增强。 无侵入式编程 连接点:程序执行的任意位置,SpringAOP中,理解为方法的执行。 切入点:匹配连接点的式子,要追加功能的方法 通知(写在通…...

微信小程序导航退回及跳转 传参(navigateBack,navigateTo)

一、uniapp navigateBack 退回上一级 当前页面-传递参数 uni.$emit(update, params)uni.navigateBack({delta: 1});退回的页面-接收参数 可以写在 onLoad 和 onShow 里面 onLoad(o) {uni.$on(update, function(e) {//参数e}}onShow() {}返回前两级 uni.navigateBack({delta: 2}…...

python实例代码介绍python基础知识

TODO: 知识点仍有待整理 import 使用 import 关键字可以让你选择性地导入所需的模块,而不必导入整个模块库。这样可以减少内存占用和加载时间,尤其是当你只需要使用模块中的某些功能时。 同时,使用 import 可以提高代码的可读性和可维护性&…...

【每日一题】掷骰子等于目标和的方法数

文章目录 Tag题目来源题目解读解题思路方法一:动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 1155. 掷骰子等于目标和的方法数 题目解读 你手里有 n 个一样的骰子,每个骰子都有 k 个面,分别标号 1 到 n。给定三个整数 n&#xff0…...

霸王条款惹品牌争议,京东双11站在商家对立面?

作者 | 江北 来源 | 洞见新研社 双11活动第一天,京东就站上了风口浪尖。 与烘焙烤箱品牌海氏的话题接连登上微博热搜,海氏控诉京东滥用市场竞争地位,破坏市场竞争秩序。在海氏的声明中,京东的行为让吃瓜群众大开眼界&#xff1a…...

深度神经网络为何成功?其中的过程、思想和关键主张选择

LeNet(1989)在小数据集上取得了很好的效果,但是在更大、更真实地数据集上训练卷积神经网络地性能和可行性还有待研究。 与神经网络竞争的是传统机器学习方法,比如SVM(支持向量机)。这个阶段性能比神经网络方…...

什么是服务器节点?

一.服务器节点的概念: 服务器节点是一种服务器装置,节点服务器是针对服务器集群来说的。主要应用在WEB、FTP等等的服务上。所以节点服务器并不是单指某一种服务器。它由多个节点和管理装置整体的管理单元构成,其特征在于:各节点具…...

水电站与数据可视化:洞察未来能源趋势的窗口

在信息时代的浪潮中,数据可视化正成为推动能源领域发展的重要工具。今天,我们将带您一起探索水电站与数据可视化的结合,如何成为洞察未来能源趋势的窗口。水电站作为传统能源领域的重要组成部分,它的运行与管理涉及大量的数据。然…...

Mac运行Docker报错

Mac运行Docker报错 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点…...

代码 $(“.btn“).click(function(){ 和代码 $(document).ready(function() 有啥区别?

看下面的内容前可以先看下博文:https://blog.csdn.net/wenhao_ir/article/details/134029389 $(".btn").click(function(){...}) 和 $(document).ready(function(){...}) 是两种不同的 jQuery 事件处理方式,它们有不同的用途和时机&#xff1…...

【nodejs脚本】为文件夹中的所有node项目执行命令 npm install 并收集error日志

目录 im 下有很多的node项目,我需要批量为这些项目执行 npm install,另外npm的error信息需要单独收集至log文件中 var fs require(fs); var util require(util); var exec util.promisify(require(child_process).exec);var projectsDirectory .; v…...

非父子组件通信-发布订阅模式

发布订阅模式其实与vue无关,完全是ES6的代码,但是它可以通过这种模式实现非父子组件的通信 store.js文件 首先创建一个store.js文件,用于提供发布与订阅方法 export default {datalist: [], //存放带一个参数的函数集合//订阅subscribe(fu…...

iPhone手机分辨率整理

手机机型(iPhone)屏幕尺寸 (inch)逻辑分辨率(pt)设备分辨率(px)缩放因子(Scale Factor)竖屏安全区域(safeAreaInsets)纵横比(Aspect ratio)像素密度(ppi)2G/3G/3GS3.5320*480320*4801xtop:20 bottom:03:21654/4(s)3.5320*480640*9602xtop:20 bottom:016:…...

【linux】SourceForge 开源软件开发平台和仓库

在linux上面安装服务和工具。我们经常会下载安装包。今天推荐一个网站。 SourceForge 开源软件开发平台和仓库 ​ 全球最大开源软件开发平台和仓库 SourceForge.net,又称SF.net,是开源软件开发者进行开发管理的集中式场所。 SourceForge.net由VA Softwa…...

LabVIEW应用开发——控件的使用(四)

接上文,这篇介绍时间控件。 LabVIEW应用开发——控件的使用(三) 1、时间控件Time Stamp control 在日常软件开发场景中,时间也是一种常用的控件,用于表达当前时间的显示、对下设置时间、时间同步等等场景。LabVIEW专门…...

MySQL - mvcc

mvcc 是什么? MVCC(多版本并发控制)是一种数据库并发控制机制,旨在提高数据库的并发性,避免锁定操作,从而减少等待和提高性能。MVCC 主要解决数据库读写操作之间的线程安全问题。 MVCC 主要有两种读取数据…...

SpringMVC 异常处理器

1、基于配置的异常处理 SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver SpringMVC提供了自定…...

迷你洗衣机哪个牌子好又实惠?内裤洗衣机热销前四榜单

小型内裤洗衣机是一款很实用的家用电器,非常适合住在小户型的房子里,或者经常要出差的人。所以,买什么牌子的内衣洗衣机比较好?目前市场上各品牌各有各的特色及应用场合,例如适合于贴身衣物如内衣、内裤、婴儿衣物清洗…...

SOCKS5代理与网络安全:如何安全地进行爬虫操作

随着网络技术的不断发展,代理技术在网络安全和数据爬取中扮演着越来越重要的角色。本文将重点介绍SOCKS5代理、SK5代理和IP代理的基本概念,以及如何在保证网络安全的前提下,利用这些技术进行有效的爬虫操作。 1. SOCKS5代理与SK5代理 SOCKS…...

onebound电商API接口商品数据采集平台:让数据成为生产力!

随着数字化商业时代的到来,API接口已成为电商资源连接利器,也是全球传统互联网企业转型的基础。 2021年 Google Cloud 研究显示,全球互联网企业近3/4的企业持续投入数字化转型,2/3的企业在持续增加投入,从这组数据可以…...

RHCE第四次练习

第 1 步:创建脚本文件vim mem_check.sh第 2 步:写入脚本内容第3步:运行脚本...

在Node.js后端服务中集成Taotoken实现稳定高效的多模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Node.js后端服务中集成Taotoken实现稳定高效的多模型调用 对于需要构建AI功能的后端开发者而言,直接对接多个模型厂商…...

Matlab 2020b隐藏技能:用Image Labeler制作自定义数据集,轻松喂给你的深度学习模型

Matlab 2020b图像标注实战:从零构建医学影像分割数据集 在医学影像分析领域,数据标注的质量直接决定了深度学习模型的性能上限。许多研究者花费大量时间调试模型结构,却忽略了最基础的数据准备环节。Matlab 2020b内置的Image Labeler工具&am…...

万维网免费开放30年:除了浏览器,我们还能从CERN的决策中学到什么开源哲学?

万维网开源决策的启示:从技术公共性到开发者行动指南 1993年4月30日,欧洲核子研究中心(CERN)宣布将万维网技术置于公共领域,这一决定彻底改变了人类获取信息的方式。当我们回溯这个历史性时刻,会发现它远不…...

从Struts2漏洞看Java Web安全:一个OGNL表达式注入引发的十年“血案”

OGNL表达式注入:Struts2框架安全漏洞的十年演进与启示 2006年,当Struts2作为Struts框架的下一代产品首次亮相时,开发者社区对其寄予厚望。这个基于MVC架构的Java Web框架承诺提供更简洁的代码结构和更强大的功能扩展性。然而,很少…...

taotoken的token plan套餐为团队开发带来的成本可控体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 的 Token Plan 套餐为团队开发带来的成本可控体验 在团队开发环境中,频繁调用大模型 API 已成为提升研发效率…...

AI 系统多模型路由与降级架构设计:从流量调度到无感切换的工程实践

背景 / 现象 在一个典型的 AI 应用系统中,主模型(如 GPT-4o、Claude 3.5 等)通常承担核心推理任务。但在生产环境中,主模型可能因额度耗尽、响应超时、服务不可用或突发限流等原因导致调用失败。此时,用户侧可能表现为…...

《Kubernetes应用篇:使用Helm工具部署mongodb 8.2.7副本集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《K8S集群运维指南》 一、简介 使用Helm结合Bitnami Chart是部署生产级mongodb到Kubernetes集群的事实标准方案。整个过程高度自动化,可以极大地简化运维复杂度。 在实际生产环境中,为了保障稳定运…...

Armv9内存拷贝指令优化与性能调优

1. Arm架构内存拷贝指令深度解析在Armv9架构中,内存拷贝操作通过FEAT_MOPS(Memory Operations)特性得到显著增强。这套指令集专为高效内存操作设计,其中CPYFP/CPYFM/CPYFE系列指令实现了分阶段的内存拷贝机制。与传统的循环拷贝相比,这种设计…...

这种界面和额外附加认证要求以前从来没有过

注册github账号很早就有了,但这种认证要求以前从来没有过。 自从上传了这个代码: mcp 桥接器 就多了认证要求。 发生了什么 :GitHub 现在要求所有活跃开发者都必须开启双重身份验证(2FA),以保护账号不被黑…...