AOP简介

AOP简介

AOP:面向切面编程,是一种编程范式,弥补了OOP的不足,基于OOP基础上进行横向开发。

AOP主要关注同一层面的各个不同功能模块之间的共性功能,将共性功能抽取出来,做成可插拔式的程序。(在不改变源代码的情况下,对某个类的具体方法进行增强)

AOP相关术语

目标对象类:需要操作的类。

目标对象(Target Object):指的是需要被增强的对象(被代理对象)。

连接点(Joinpoint):目标对象类中的所有方法(被拦截到的点)。

切入点(point):目标对象中被抽取的共性功能的方法是后期需要增强的方法。(注:连接点不一定是切入点,切入点一定是连接点)

通知(Advice):将目标对象中共性功能抽取出来形成的方法。

通知类:通知对应的类。

切面(Aspect):切入点和通知之间的关系。

AOP代理(AOP proxy):通过代理生成代理类的过程(一个类被AOP织入增强后,就产生一个结果代理类)

织入(Weaving):动态的将通知加入到切入点对应位置的动作(过程)成为织入。

引入(引介)(Introdcution):引入机制可以为类添额外的成员变量或成员方法,在编译期或类加载期完成。


AOP相关术语

AOP主要分为静态AOP和动态AOP。

静态AOP:AspectJ实现的AOP,将切面代码直接编译到Java类文件中。

动态AOP:将切面代码进行动态织入实现的AOP。

实现的技术为:JDK提供的动态代理和cglib(动态字节码增强技术)。

JDK动态代理:(要增强的类必须要实现一个借口)创建一个代理类,让代理类实现和目标类相同的借口,通过InvocationHandler来进行增强,代理类和目标类是兄弟关系,不可以将代理类转换成目标类

CGLIB动态代理:(任意一个类都可以使用的代理)创建一个代理类,让代理类继承目标类,通过callback(MethodInterceptor)来进行增强,代理类和目标类是父子关系,可以将代理类转成目标类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值