初学SpringAOP及动态代理

JDK动态代理与CGLIB动态代理的区别

JDK动态代理

 CGLIB动态代理

原理区别
JDK动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体的方法之前调用InvocationHandler
CGLIB动态代理是利用ASM开源包,对被代理类的class文件进行字节码修改,生成被代理类的子类,覆盖目标方法。
依赖区别
JDK动态代理,不需要第三方的库,只要JDK环境就可以;
CGLIB动态代理,需要加入cglib、asm的类库
要求区别
JDK动态代理,被代理的类必须有实现的接口
CGLIB动态代理,针对具体的实现类进行代理,但是类不能用final修饰。
编程区别
JDK动态代理,需要实现InvocationHandler接口编写增强、使用Proxy.newInstance获取代理对象
CGLIB动态代理,实现MethodInterceptor接口中的invoke方法实现增强,使用Enhancer根据被代理对象和增强修改字节码文件 

SpringAOP

spring底层动态代理默认使用JDK动态代理,也可以使用CGLIB动态代理但需要指定,JDK目标对象必须实现一个接口,若不实现则会默认使用CGLIB动态代理

怎么理解SpringAOP:

springAOP是spring核心功能之一,AOP 面向切面编程,是一种对面向对象的补充,将核心和附加代码的解耦,(下单和支付的过程中需要一些日志,日志写到一起就是强耦合了,使用面向切面编程,就可以进行一定程度的分离,在不影响核心代码的同时,可以去修改附加代码)


spring AOP通知类型都有哪些:前置,后置,环绕,异常,最终


Joint Point(连接点) 程序执行的某个特定位置,该位置标识执行额外功能的位置 
PointCut(切入点) 判断在哪些连接点上执行操作的断言 
Advice(通知/增强) 运行期需要执行的额外功能,例如:记录日志、权限控制等 
Target(目标) 被代理的目标对象 
Proxy(代理) 代理对象 
Weaving(织入) 把增强应用到目标对象来创建代理对象的过程。 
Aspect(切面) 切入点和增强的组合,即标识在哪些连接点进行怎样的增强 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值