[Spring]第五篇:AOP面向切面编程概念

news2024/11/29 20:30:26

 AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等
AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理

 

为Dao层所有的add方法添加一个性能记录功能


AOP中的术语辨析

1 连接点 Joint point:
类里面那些可以被增强的方法,这些方法称之为连接点
表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point


2 切入点 Pointcut: 
实际被增强的方法,称之为切入点
表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方

3 通知 Advice: 
实际增强的逻辑部分称为通知 (增加的功能)
Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
通知类型: 1 前置通知 2 后置通知 3 环绕通知 4 异常通知 5 最终通知

4 目标对象 Target:被增强功能的对象(被代理的对象)
织入 Advice 的目标对象

5 切面Aspect: 表现为功能相关的一些advice方法放在一起声明成的一个Java类
Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。

6 织入 Weaving:
创建代理对象并实现功能增强的声明并运行过程
将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
 

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

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

相关文章

jupyter中配置多种虚拟环境

Microsoft Windows [版本 10.0.19044.2251] © Microsoft Corporation。保留所有权利。 C:\Users\ThinkStation>conda activate pytorch(pytorch) C:\Users\ThinkStation>conda install ipykernelCollecting package metadata (current_repodata.json): done Solvin…

CAS:956748-40-6|Biotin-PEG-Azide|Biotin-PEG-N3|生物素PEG叠氮供应

由抗生物素或链霉亲和素结合PEG衍生物化学试剂Biotin-PEG-Azide(Biotin-PEG-N3),其中文名为生物素-聚乙二醇-叠氮,它所属分类为Azide PEG Biotin PEG。CAS编号为956748-40-6。 该PEG试剂的分子量均可定制,有&#xff…

POSIX线程(一)

目录 一、前言 二、What Is a Thread? 三、Advantages and Drawbacks of Threads 四、A First Threads Program 1、A Simple Threaded Program(thread1.c) 五、Simultaneous Execution 1、Simultaneous Execution of Two Threads(thre…

Caffeine 源码、架构、原理(史上最全,10W超级字长文)

文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新 史上最全 面试必备 2000页 面试必备 大厂必备 涨薪必备 免费赠送 经典…

IbBBX24–IbTOE3–IbPRX17模块通过清除甘薯中的活性氧来增强甘薯对非生物胁迫耐受性

文章信息 题目:The IbBBX24–IbTOE3–IbPRX17 module enhances abiotic stress tolerance by scavenging reactive oxygen species in sweet potato 刊名:New Phytologist 作者:Huan Zhang,Shaozhen He et al. 单位&#xff1…

终于有阿里p8进行了大汇总(Redis+JVM+MySQL+Spring)还有面试题解全在这里了!

Redis特性 Redis是一直基于键值对的NoSQL数据库; Redis支持5种主要数据结构:string、hash、list、set、zset以及bitmaps、hyperLoglog、GEO等特化的数据结构; Redis是内存数据库,因此它有足够好的读写性能; Redis支持…

[附源码]Python计算机毕业设计SSM临港新片区招商引资项目管理系统的设计与实现(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

jmeter性能测试使用梯度测试的方法

JMeterPlugins-Standard.jar下载地址:Download :: JMeter-Plugins.org 项目验收,用jmeter做并发测试,测试单位不通过,我们可以 仔细一问测试单位,嘿,jmeter写个并发数做测试不算并发测试,要做…

Vue3 —— 利用vite创建一个vue3项目

前言 本文主要讲解如何利用vitevue创建第一个项目以及vue3的基础知识点 一、创建一个vue3项目 这里我们主要介绍如何利用 vitevue3创建项目 1.有关vite Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是…

Editor扩展常用API

如图 效果图 代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class Mybianyi : EditorWindow { string PasswordField ""; string m_textArea ""; float …

力扣hot100——第1天:1两数之和、2两数相加、3无重复字符的最长子串

文章目录1.1两数之和【代码随想录已刷】2.2两数相加2.1.题目2.2.解答3.3无重复字符的最长子串3.1.题目3.2.解答1.1两数之和【代码随想录已刷】 参考:力扣题目链接;自己的博客题解 2.2两数相加 参考:力扣题目链接;参考题解 2.1…

【附源码】计算机毕业设计JAVA众筹平台网站

【附源码】计算机毕业设计JAVA众筹平台网站 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

什么是 游戏引擎 ?各个主流引擎的区别

在之前的元宇宙中有提及到游戏主播这个行业,那对应的就会有游戏开发者,对于开发最快捷的方式当然是使用游戏引擎进行开发了呀,那接下来我们就来说说这方面的内容吧 ! 本篇文章主要讲解,游戏开发中常用的5个游戏引擎及其…

C++——二叉搜索树

目录 二叉搜索树 二叉搜索树实现 非递归插入|非递归查找 删除 推导阶段 非递归删除代码 递归查找 递归插入 递归删除 析构函数 拷贝构造 赋值重载 完整代码 二叉搜索树的应用 Key/Value模型 二叉搜索树 二叉搜索树又称二叉排序树,它或者是一…

第3部分 静态路由

目录 3.1 静态路由与默认路由 3.1.1 静态路由介绍 3.1.2 默认路由介绍 3.2 静态路由命令汇总 转发数据包是路由器的最主要功能。路由器转发数据包时需要查找路由表,管理员可以通过手工的方法在路由器中直接配置路由表,这就是静态路由。虽然静态路由不…

Dialog的IDE搭建systermView的方法步骤(DA1469X)

1.背景 SystemView 是一个可以在线调试嵌入式系统的工具,它可以分析有哪些中断、任务执行了,以及这些中断、任务执行的先后关系。还可以查看一些内核对象持有和释放的时间点,比如信号量、互斥量、事件、消息队列等。这在开发和处理具有多个线…

大规模 MIMO 检测的近似消息传递 (AMP)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

神经架构搜索的综合调查:挑战和解决方案(一)

神经架构搜索的综合调查:挑战和解决方案 paper题目:A Comprehensive Survey of Neural Architecture Search: Challenges and Solutions paper是西北大学发表在ACM Computing Surveys 2021的工作 paper地址:链接 ABSTRACT 深度学习以其强大的…

c#机器学习之opencv(2)-Mat基础

目录Mat基础Mat本质copyTo与cloneMat基础 opencv将图像数据存在一个二维矩阵里。 下面代码复制了一个图像矩阵。 Mat srcPic new Mat("test1.png", ImreadModes.Color); Mat aPic new Mat(srcPic,new OpenCvSharp.Rect(100,120, srcPic.Width-100, srcPic.Heigh…

1.8 打好shell基础

一、常用shell命令 1、管道命令 (1)命令格式 (2)案例演示 任务1、查看/etc目录信息前5行信息 执行命令:ll /etc | head -5 任务2、查看/etc/profile文件后5行信息 执行命令:cat /etc/profile | tai…