spring Aop的概念
aspect:一定要给spring去管理 抽象 aspectj->类
pointcut:切点表示连接点的集合 -------------------> 表
(我的理解:PointCut是JoinPoint的谓语,这是一个动作,主要是告诉通知连接点在哪里,切点表达式决定 JoinPoint 的数量)
Joinpoint:连接点 目标对象中的方法 ----------------> 记录
(我的理解:JoinPoint是要关注和增强的方法,也就是我们要作用的点)
Weaving :把代理逻辑加入到目标对象上的过程叫做织入
target 目标对象 原始对象
aop Proxy 代理对象 包含了原始对象的代码和增加后的代码的那个对象
advice:通知 (位置 + logic)
advice通知类型:
Before 连接点执行之前,但是无法阻止连接点的正常执行,除非该段执行抛出异常
After 连接点正常执行之后,执行过程中正常执行返回退出,非异常退出
After throwing 执行抛出异常的时候
After (finally) 无论连接点是正常退出还是异常退出,都会执行
Around advice: 围绕连接点执行,例如方法调用。这是最有用的切面方式。around通知可以在方法调用之前和之后执行自定义行为。它还负责选择是继续加入点还是通过返回自己的返回值或抛出异常来快速建议的方法执行。
Proceedingjoinpoint 和JoinPoint的区别:
Proceedingjoinpoint 继承了JoinPoint,proceed()这个是aop代理链执行的方法。并扩充实现了proceed()方法,用于继续执行连接点。JoinPoint仅能获取相关参数,无法执行连接点。
JoinPoint的方法
1.java.lang.Object[] getArgs():获取连接点方法运行时的入参列表;
2.Signature getSignature() :获取连接点的方法签名对象;
3.java.lang.Object getTarget() :获取连接点所在的目标对象;
4.java.lang.Object getThis() :获取代理对象本身;
proceed()有重载,有个带参数的方法,可以修改目标方法的的参数
Introductions
perthis
使用方式如下:
@Aspect("perthis(this(com.chenss.dao.IndexDaoImpl))")
要求:
1. AspectJ对象的注入类型为prototype
2. 目标对象也必须是prototype的
原因为:只有目标对象是原型模式的,每次getBean得到的对象才是不一样的,由此针对每个对象就会产生新的切面对象,才能产生不同的切面结果。
spring Aop的概念相关推荐
- Spring Aop 初级- 概念及作用
为什么要使用 aop 在软件开发的过程中,通常我们会遇到非常复杂的功能,比如:用户权限,日志记录,性能统计,安全控制,事务处理,异常处理.比如在打印日志这个功能中,如果要实现这个功能,一般来说需要在各 ...
- Spring AOP 基本概念
AOP的概念 AOP(Aspect-Oriented Programming) 即面向切面编程,它与 OOP(Object-Oriented Programming,面向对象编程)相辅相成,提供了与 ...
- Spring——AOP基本概念的理解
文章目录: 1.引子 2.AOP的概念 2.1 什么是AOP? 2.2 AOP的作用 2.3 AOP中的编程术语 2.4 AOP技术思想的实现 3.使用AspectJ框架实现AOP的基本知识 3.1 ...
- Spring AOP(一) AOP基本概念
Spring AOP 基本概念 术语 容易理解 举个栗子给大家讲一下代理: 什么是AOP? 基本术语 (1)切面(Aspect) (2) 目标对象(Target) (3) 连接点(JoinPoint) ...
- Spring AOP之HelloWorld与概念介绍(xml版)
Spring AOP之HelloWorld与概念介绍 什么是AOP Spring AOP代码实现 Spring AOP 基本概念介绍 目标类 连接点 切入点 切面 切面类 通知 通知类别 织入 什么是 ...
- Spring AOP 概念及动态代理模式
Spring AOP 概念及动态代理模式 文章目录 Spring AOP 概念及动态代理模式 1 AOP 的概念及相关术语 2 AOP 作用 3 AOP 原理概述 3.1 JDK 动态代理(Proxy ...
- 利用spring aop统一处理异常和打日志
利用spring aop统一处理异常和打日志 spring aop的概念,很早就写博客介绍了,现在在工作中真正使用. 我们很容易写出的代码 我们很容易写出带有很多try catch 和 logger. ...
- Spring AOP注解方式实现
简介 上文已经提到了Spring AOP的概念以及简单的静态代理.动态代理简单示例,链接地址:https://www.cnblogs.com/chenzhaoren/p/9959596.html 本文 ...
- 我所理解的Spring AOP的基本概念
Spring AOP中的概念晦涩难懂,读官方文档更是像读天书,看了很多例子后,写一些自己理解的一些spring的概念.要理解面向切面编程,要首先理解代理模式和动态代理模式. 假设一个OA系统中的一个功 ...
最新文章
- pandas dataframe column_Python数据分析——Pandas 教程(下)
- yii2.0 下拉菜单
- CSS综合征病例,医药-churg-strauss 综合征 (css) 变应性嗜酸性肉芽肿.ppt
- java mysql连接两张表,如何使用Java和MySQL在一个语句中插入两个不同的表?
- Linux命令(11)—— 给文件增加和减少权限chomod命令
- 前端框架Vue、angular、React的优点和缺点,以及应用场景
- 【笔记】双线性池化(Bilinear Pooling)详解、改进及应用
- The Game Of Life – 数据结构与算法的敲门砖
- 网络数据包收发流程:从驱动到协议栈
- 关于SWAT模型的一些原理(二)
- 使用python读取mid/mif文件
- 乐鑫Esp32-S2学习之旅② ESP32-S2 以 I2C 驱动 SHT20 获取温湿度数据,代码开源!
- VB.net 研华IO卡1762的编程方法 控件方法 VS2010专业版
- Word写论文及PPT画论文图的经验总结
- 亲戚关系关系算法java程序_亲戚关系计算器 算法实现
- autojs ui界面模板3
- 关于字符串旋转问题的一些心得
- 蓝桥杯——机器人行走(模拟类题目)Java语言实现
- xshell个人免费版下载使用
- 完美解决OpenCV Mat 与 FFmpeg AVFrame 的相互转换
热门文章
- Flex 当鼠标悬停在DataGrid某行上时用datatoolField显示当前行
- 使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试
- JS日期函数getMonth()的值域是0--11
- 3章-字符串类型操作
- spring boot热部署devtools
- 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?...
- JS的隐式转换 从 [] ==false 说起
- XML 序列化与反序列化
- halcon基本,vb,vc连接halcon读取图像,视频
- 快慢法判断单链表中是否有循环链表