Talk is cheap. Show me the code

第一步:编写一个类,用于被CGLIB增强。

package com.xxx.hyl.cglib;public class BaseBean {public void say() {System.out.println("this is son");}
}

第一种方式查看CGLIB增强后的Class。

package com.xxx.hyl.cglib;import net.sf.cglib.core.DebuggingClassWriter;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class CglibDemo {public static void main(String[] args) {// 指定 CGLIB 将动态生成的代理类保存至指定的磁盘路径下System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "D:\\cglib");Enhancer enhancer = new Enhancer();enhancer.setSuperclass(BaseBean.class);enhancer.setCallback(new CustomizedMethodInterceptor());BaseBean baseBean = (BaseBean) enhancer.create();baseBean.say();}static class CustomizedMethodInterceptor implements MethodInterceptor {@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy)throws Throwable {System.out.println("invoke " + method.getName() + " before ! ");Object result = methodProxy.invokeSuper(o, objects);System.out.println("invoke " + method.getName() + " after ! ");return result;}}
}

第二种方式,借助于Java的HSDB。

1.通过cmd找到当前Java进程PID。

2.在JDK的lib目录下,找到sa-jdi.jar执行:java -classpath sa-jdi.jar “sun.jvm.hotspot.HSDB”
3.点击File->Attach to hotspot process
4.在HSDB输入对应进程后,点击Tools->Class Browser然后输入要查找的类。
5.点击就会创建.class文件,路径为sa-jdl.jar所在的路径


6.可以把这个.class文件拖到Idea中进行查看。

查看Cglib生成的Class(字节码)文件相关推荐

  1. 一个java源文件中可以声明多少个class与编译后会生成多少个字节码文件

    在一个java源文件中可以声明多个class. 但是,只能最多有一个类声明为public的. 而且要求声明为public的类的类名必须与源文件名相同. 编译的过程 编译以后,会生成一个或多个字节码文件 ...

  2. python字节码文件后缀_如何生成Python的字节码文件

    好记性不如烂笔头,看到Python Command-Line Options中有关字节码的生成,记录起来. Python的字节码文件有2种,文件后缀名分别是.pyc和.pyo,前者是普通的字节码, 后 ...

  3. [Java安全]—动态加载字节码文件

    ClassLoader加载远程字节码 POC import java.io.IOException; import java.net.URL; import java.net.URLClassLoad ...

  4. Idea如何方便的查看Java字节码文件,你是怎么做的

    ·校园的傍晚· 前言 作为一名Java开发人员,我想Java字节码文件是无论如何都会接触到的,也是要读懂的.面试或者是自己开始研究Java的一些底层原理,大都会遇上要字节码文件的时候. 接下里咱们一起 ...

  5. java编译后生成字节码_请问java源文件编译后怎么生成字节码文件?

    比如,有的java源程序生成一个字节码文件,带有内部类的生成两个.可是有一种情况怎么回事呢?importjava.awt.*;importjavax.swing.*;importjava.awt.ev ...

  6. IDEA查看Java字节码文件

    在Java项目开发的过程中,我们有时候需要获得Java的字节码文件( .class文件 ),以便加深对问题的理解与排查. 步骤: 1. 单击IDEA右侧的Maven工程管理,选择生命周期控制(life ...

  7. C语言会生成字节码文件吗,什么是字节码文件?

    字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式, Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行.解释是通过Ja ...

  8. 如何获取设计模式中动态代理的字节码文件

    目录 保存jdk动态代理的字节码文件 保存cglib的字节码文件 获取字节码文件的目的主要是为了解惑,知道jdk动态代理必须使用委托类接口接收,知道cglib动态代理可以使用委托类来接收,查看编译后的 ...

  9. java探针之修改类字节码文件

    java探针利用了javaAgent + ASM字节码注入工具实现了动态修改类文件的功能.像skywalking和arthas都使用到了这个技术. 具体原理为: jdk1.5以后引入了javaAgen ...

  10. 这一次,彻底弄懂 Java 字节码文件!

    作者 | 东升的思考 责编 | Elle 不啰嗦,直接从最最简单的一段Java源代码开启Java整体字节码分析之旅. Java 源码文件 package com.dskj.jvm.bytecode; ...

最新文章

  1. postgresql GUC 参数
  2. C++ primer - - 第一部分
  3. 分享丨10年DBA老司机整理的Oracle学习路线图
  4. 大数高精运算-----乘法
  5. RabbitMQ消息队列简单异步邮件发送和订单异步处理实战【应用解耦】【异步削峰】
  6. ASIHTTPRequest类库简介
  7. [vscode] 推荐插件及配置
  8. sping boot demo解释
  9. Programiz 中文系列教程·翻译完成
  10. jeecg框架MybatisPlus出现查询条件重复现象
  11. 统计推断—假设检验(hypothesis testing)
  12. Swift游戏实战-跑酷熊猫 04 熊猫的跳和滚的动作
  13. xampp 配置php运行环境
  14. Monkey简单介绍
  15. 任正非:不惑之年创立华为是生活所迫,CEO真不是人干的活
  16. 【Python自动化测试】:模拟鼠标操作
  17. p 值的意义是什么?终于有人讲明白了
  18. js时间搓转时间,日期横杠转斜杠,时间转时间搓,年月日补个零,星期几,获取当前时间
  19. SAP UI5 应用在 Business Application Studio 里的构建单步分析
  20. 安利超实用的游戏技能特效素材!

热门文章

  1. 机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集
  2. 算法:二叉树从树叶到根部每层构成的数组队列107. Binary Tree Level Order Traversal II
  3. iOS app 启动 crash XCode 11 NSPOSIXErrorDomain Code=2 “No such file or directory“
  4. 饿了么商品排序怎么实现PHP,PHP实现桶排序算法
  5. mysql8多表连接_MySQL 多个表的 连接
  6. Java 最长递增子序列_最长递增子序列问题 Java
  7. 【面经系列】八位硕博大佬的百度之旅
  8. Eclipse找不到或无法加载主类
  9. Playing Atari with Deep Reinforcement Learning 中文 讲解2
  10. PCA方法从原理到实现