advice 5种:
before
after returning(成功)
在目标方法成功之后织入advice
可额外指定一个returning属性,该属性有2个作用:
-advice方法可以通过该属性指定的值来访问目标方法的返回值
-advice方法的声明该返回值类型时,限制目标方法的返回值必须为指定的类型,否则不会织入
如果不想对目标方法的返回值进行限制,可将该返回值声明为Object
after throwing(异常)
在目标方法出现异常时织入的advice,类似catch
可额外指定一个throwing属性,该属性有2个作用:
-advice方法可以通过该属性指定的值来访问目标方法抛出的异常
-advice方法的声明该返回值类型时,限制目标方法的返回值必须为指定的类型,否则不会织入
如果不想对目标方法的异常进行限制,可将该异常声明声明为Exception 和Throwable
**after(不管)**类似finally,通常用来释放一些资源
around

这种advice功能强大,它即可以访问、修改目标方法调用参数,也可以访问、修改目标方法的返回值,它甚至完全阻止目标方法的执行
它即可以在目标方法之前织入,也可以在目标方法之后织入
弱点:它是线程不安全的,能用其他advice搞定,就不要用它
Around advice方法必须满足一下3点:
1.必须声明返回值类型
2.必须声明一个类型为ProceedingJoinpoint类型的形参
3.必须调用ProceedingJoinPoint形参的proceed()方法,这就是调回目标方法,如果没有这一行,目标方法不会执行。

ProceedingJoinPoint继承JoinPoint,JoinPoint包含如下方法:
getArgs:获取目标方法调用的参数
getKind:获取连接点的类型
getSignature:获取目标方法的签名
getTarget:获取对象
getThis:获取AOP代理

不管配置哪种advice都需要指定2个属性:
-method:用注解不要这个属性
-pointcut/pointcut-ref:pointcut直接指定切入点表达式,pointcut-ref引入已有的切入点表达式
5种advice的功能总结:
Before AfterReturning AfterThrowing After Around
访问调用参数 可 可 可 可 可
修改调用参数 不 不 不 不 可
阻止目标方法执行 可 不 不 不 可
访问返回值 不 可 不 不 可
修改返回值 不 可 不 不 可
一般来说,需要修改目标方法的调用参数、修改目标方法的返回值,此时只能使用Around Avice

访问目标方法的调用参数
A。通过为Adivce方法增加一个JointPoint类型的形参
JointPoint.getArgs()即可获取所有形参
B。and args(a,…)至少有一个
如果你在args()指定什么参数,此处就可通过它们来访问目标方法调用的参数,它还会对目标方法的形参进行限制

AOP的切入点指示符
execution(…)
默认下情况下*作为通配符
target(类型):要求目标对象必须是指定类型
this(类型):要求AOP代理对象必须是指定类型
args(a,b):要求目标方法必须有匹配的形参
bean(beanid):专门为用spring的菜鸟准备的
pointcut=“bean (hello) orbean (world)”

AOP的5种advice相关推荐

  1. AOP :五种Advice注解

    五种Advice注解 @Before,前置通知 @After(finally), 后置通知,方法执行完之后 @AfterReturning,返回通知,成功执行之后 @AfterThrowing,异常通 ...

  2. Spring实现AOP的4种方式

    Spring实现AOP的4种方式 先了解AOP的相关术语: 1.通知(Advice): 通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作. 2.连接点(Joinpoint ...

  3. 从诸葛亮博望坡火烧曹军谈Spring AOP 的五种使用方式

    曹操自剿黄巾,讨董作,擒吕布,灭袁绍后,队伍达到鼎盛期,拥有兵将100余万,为了统一全国,派手下将领夏候淳领兵十万攻打新野.时当秋月,秋风徐起,夏侯惇引兵至博望坡,新野危在旦夕. 刘备请军师诸葛亮对策 ...

  4. AOP的两种实现方式

    AOP,面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术.     Aspect Oriented Programming(AOP),是目前软 ...

  5. Spring源码浅析之AOP、Aspect、Advice

    前言 理一理AOP与切面(Aspect).通知(Advice)的关系 概念 通知(Advice): AOP 框架中的增强处理.通知描述了切面何时执行以及如何执行增强处理. 连接点(join point ...

  6. Spring AOP的三种实现方式

    目录 一.什么是AOP 二.Spring AOP的三种实现方式 1.通过Spring API实现AOP (1)编写业务接口和实现类 (2)编写增强类,并实现Spring API相关接口的方法 (3)在 ...

  7. spring aop的两种写法aspect和advisor

    本文转自:https://www.cnblogs.com/leiOOlei/p/3709607.html 首先看个例子,如下 接口代码: package com.lei.demo.aop.schema ...

  8. Spring AOP:搞清楚advice的执行顺序

    文章目录 目录 AOP的核心概念 模拟aspect advice的执行过程 同一aspect,不同advice的执行顺序 不同aspect,advice的执行顺序 同一aspect,相同advice的 ...

  9. Spring Aop源码学习--Advice通知

    Advice通知,所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置.后置.异常.最终.环绕通知五类 (1)BeforeAdvice.AfterAdvice:SpringAOP自定义的通知, ...

最新文章

  1. Programming Pearls: Chatper3 Problem6 [Form letter generator]
  2. 转帖:3D音频之双耳效应
  3. H264码流的两种形式:Annex B和AVCC
  4. c语言函数调用排序用插入法,C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)...
  5. Reactjs不能忽略的key
  6. [Latex排版]之visio图转成eps的方法
  7. 优秀文章收集,也有专题,改变了我的一些看法。
  8. php 抽象类 接口 区别,php中接口、抽象类以及接口和抽象类区别详解
  9. 计算机网络基本原理pdf,自考计算机网络基本原理课程学习.pdf
  10. PHP生僻汉字转化为拼音
  11. Source Insight 常用颜色代表种类
  12. 测试一拳多少公斤的软件,李小龙一拳能打出400公斤,手里双节棍有多少力量,测试后难以置信...
  13. MySQL具体解释(5)-----------函数超全总结
  14. 广东省计算机媒体大赛,年广东省大学生计算机设计大赛.doc
  15. 关于一个大学生如何利用编程赚钱
  16. 问题:npm如何设置仓库地址?
  17. idea永久激活使用
  18. Python能用来做什么?以下是Python的三大主要用途
  19. ROS2古月老师课程urdf运行报错问题
  20. python字符串的大小写转换

热门文章

  1. 论文阅读笔记 | 目标检测算法——YOLOX
  2. 基于Python,OpenCV,Numpy和Albumentations实现关键点检测的合成数据集
  3. 数据分析必备|你不得不知道的11款数据分析工具
  4. 在线详情页设计,素材免扣直接用!
  5. 全国高校计算机专业,全国高校计算机专业排名
  6. 2022-2028年中国草炭行业市场深度分析及发展趋向分析报告
  7. 研一学习生活的总结~
  8. Ajax 技术汇总(转载)
  9. supervisor 管理 redis 遇到的坑
  10. 信息编码表示:ASCLL、汉字信息编码略