java SpringAOP代理方式,以及代理原理

动态代理适用场景


1,日志集中打印
2, 事物
3, 权限管理
4,Spring AOP


动态代理技术栈图


这里写图片描述

SpingAOP可以哪些方式实现和区别

JDK Proxy(动态构建字节码)(生成一个全新的代理class)

cglib(动态构建字节码)(生成一个全新的代理class)

Aspectj (修改目标类的字节码,植入代理的字节,在程序中编译)(直接修改目标class)

instrumentation (修改目标类的字节码,类装载的时候动态拦截去修改,基于javaagent)
(直接修改目标class)

区别:

    JDK Proxy 和 cglib 易于实现

    Aspectj 和 instrumentation 实现性能高,但是代价大

多种实现方式的区别在于对字节码的切入方式不同,可选方式有:

    JDK Proxy ,cglib 是基于动态构建字节码

    Aspectj 是借助idea,eclipse编译工具在编译时候植入代理的字节码

    instrumentation 是基于javaagent在类装载的时候修改Class 植入代理字节码

    使用自定义ClassLoader在装载的时候植入字节码

动态代理的本质过程均是Class字节码的构建和修改 :

    修改的工具有ASM,javassist
    idea,eclipse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值