标签:point 任意 Advice joint springAOP 执行 方法
aop相关概念:
Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut(切点):表示一组 joint point,通过逻辑关系组合起来,或是通过通配、正则表达式等方式将joint point (符合规则的joint point )集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Target(目标对象):织入 Advice 的目标对象 .。
Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
比如给感冒的人打针,每个人都是一个Joint point,但是我们只需要给感冒的人打针,所以我们根据感冒这个规则,将符合这些规则的人聚集起来形成一个Pointcut,而打针这个动作就是Advice 。
基于xml的aop:
需要先在xml文件里引入aop命名空间:
过程:
先声明一个aspect:
ref=“”代表当前aspect需要执行相应的advice时,去哪个类里面寻找对应的方法
声明一个切点:
expression用来定义讲那些join point聚合在一起的规则,或者说哪些join point需要执行advice
声明一个advice
你可以使用 <aop:{ADVICE NAME}> 元素在一个 中声明五个建议中的任何一个(before【在一个方法执行之前,执行通知】,after【在一个方法执行之后,不考虑其结果,执行通知。】,after-returning【在一个方法执行之后,只有在方法成功完成时,才能执行通知。】,after-throwing【在一个方法执行之后,只有在方法退出抛出异常时,才能执行通知。】,around【在建议方法调用之前和之后,执行通知。】),如下所示:
method(打针)代表当前adivce执行aspectConfig(<aop:aspect ref>执行的bean)中的哪个方法,pointcut-ref指向我们声明过的<aop:pointcut>,代表在当前pointcut(感冒)中的joint point(人)执行此方法,也可以使用pointcut属性直接指定:
expression配置说明:
public声明的方法,第一个*代表任意类型的返回值,第二个*代表任意方法名,(..)代表任意数量的参数
第一个*代表任意类型的返回值,set* 代表一set开头的任意方法名,(..)代表任意数量的参数
第一个*代表任意类型的返回值,com.app.model.HelloWorld代表HelloWorld这个bean下面的方法,第二个*代表任意方法,(..)代表任意数量的参数
标签:point,任意,Advice,joint,springAOP,执行,方法 来源: https://www.cnblogs.com/yuby/p/10919692.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。