java动态代理面试题

题目

1.动态代理的应用场景?
2.aop就是代理吗?aop和代理的关系?
3.spring aop中代理有哪4种实现方式?区别?
4.代理底层操作的是什么?
5.如何查看某个class类的jvm虚拟机指令码?aspectj和instrumentation实现的逻辑是什么?它们和java proxy、cglib有什么区别?
6.动态代理技术栈图?

答案

  • 基于Class字节码透视java动态代理本质 https://www.youtube.com/watch?v=9uEIOpbi-lQ&list=PLtLteuiQZN4P_H0HcrqjgBAsRepMRnyQb
  • 问题5的答案:①aspectj和instrumentation是跳过代码层面直接在class文件里织入字节码指令,而java proxy和cglib是生成新的class。 ②前面两个是需要用到反射的。③共同点就是它们底层都是通过字节码实现的。 ④ 其中cglib和instrumentation对字节码的操作都是通过ASM实现的。java proxy 和 aspectj是自己操作字节码。
  • 动态代理技术栈图:

Java Proxy示例代码

使用javap -c ProxyTest.class查看字节码信息

0

发表评论

邮箱地址不会被公开。