java SpringAOP代理方式,以及代理原理
程序员文章站
2022-03-14 22:55:10
...
动态代理适用场景
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
上一篇: session的介绍与简单使用
下一篇: apache与nginx的优缺点
推荐阅读
-
Java JDK动态代理(AOP)的实现原理与使用详析
-
Java两种方式实现动态代理
-
过cloudflare,使用cfscrape,以及cfscrape挂代理的方式
-
java在线学习-SpringAop中pointcut的原理以及如何手动实现
-
spring基本使用(13)-springAOP的使用以及原理3 springAOP的自动代理创建器AbstractAutoProxyCreator
-
JAVA框架——MyBatis总结(一)Mapper文件详解,动态代理方式,参数传入问题,结果返回问题
-
夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题
-
Java框架之spring(二)静态和动态代理、AOP及AOP的实现方式
-
浅谈Java【代理设计模式】以及原理解刨
-
Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别