Spring AOP实现之概念术语

1、通知(Advice):

通知描述了某一横切关注点处要完成的工作。

工作:拦截要做的事情

横切关注点:2类4个

BeforeAdvice: 目标方法执行前(前置通知MethoBeforeAdvice)、

AfterAdvice: 正常返回(返回通知AfterReturningAdvice)、异常(异常通知ThrowsAdvice)

但是没有 finally(后置通知)这种类型

 

Advice都是用户接口,纯用户实现。要关联到框架中执行,都是通过组合进对应的MethodInterceptor,由框架调用Intercepot的invoke方法,从而跟Advice扯上关系。

AfterReturningAdvice

 

2、连接点(Joinpoint):

程序所有能够应用通知的业务方法,就是连接点。

 

3、切入点(Pointcut)

切入点定义了真正应用通知的地方。

切入点是连接点中的子集,因为不是所有业务方法都要执行通知方法的。

spring中允许我们方便的用正则表达式来指定。

 

4、切面(Aspect)

包含通知和切入点

 

5、引入(Introduction)

引入允许我们向现有的类添加新的方法和属性(spring提供了一个方法注入的功能)

 

6、目标(Target)

即被通知的对象,如果没有AOP,那么它的逻辑将要交叉别的事务逻辑,有了AOP之后它可以只关注自己要做的事

 

7、代理(proxy)

相当于是目标对象的替身,执行目标方法时,会应用通知的对象的前置、返回、异常、后置这些通知方法,从而增加额外逻辑。核心逻辑还是调用了目标对象的方法。

 

8、织入(Weaving)

把切面应用到目标对象来创建新的代理对象的过程,织入一般发生在如下几个时机:

(1) 编译时:当一个类文件被编译时进行织入,这需要特殊的编译器才可以做的到,例如AspectJ的织入编译器。

编译成的.class文件中有代理动作。

(2) 类加载时:使用特殊的ClassLoader在目标类被加载到程序之前增强类的字节代码

.class没有被污染,但是由其加载得到的Class是增强过的,Metaspace中的code是有代理动作的。

(3) 运行时:切面在运行的某个时刻被织入,SpringAOP就是以这种方式织入切面的,原理应该是使用了JDK的动态代理技术

原来的.class和Class都没有改变,而是生成一个专门放代理动作的代理对象,代理逻辑放在Inteceptor接口实现中。

Spring AOP提供两种实现:JDK动态代理 和 Cglib动态代理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值