最实用的使用idea看源码的技巧
很多时候新手看源码都会被绕晕, 本人也踩过这个坑,经过摸索 总结出来一些实用的看源码过程中的debug技巧。
首先,重点是带着问题去看,不然无处下手,都不知道入口是哪
举例:
我想看spring容器getBean时候的过程。是如何getbean的,如果有切面,又是如何实现的。
那么带着这个问题
我就需要去看
applicationContext.getBean("userService");
这行代码。
新手往往直接就点进去了,
然而再点进去之后是一个接口
这个时候就开始懵逼了
这个接口有n个实现,到底是走哪个??? 具体怎么走?
这个时候,第二个问题,不熟的源码,一定要开启debug模式,断点去看,因为框架里面的接口和抽象类往往有多个实现类,不到真正运行的时候,新手是看不出来是用的哪个实现类的。 使用step into可以进入方法内部, 最最注意的 在接口处打断点,debug的时候可以直接跳到该接口的实现类
例子:
打上断点debug
点进去getBean方法
此时点单步调试,先进来这段代码
进来之后
此时如果直接点getbean ,进行去是一个接口,那么可以在接口处打上断点,这样可以直接跳到该接口的实现类
然后点
就能进入到getBean实现类的方法
因此可以选择单步一步步看下去,也可以在接口处打上断点 直接跳到实现类。
注意:该方法也可能会被spring启动过程的其他类调用,因此加上断点之后,可能进入断点的时候不是自己的代码执行流程,因此,要么就是在启动之后,到了getBean那一步去加上断点,要么就是在断点上加上条件 过滤掉不是自己条件的调用
最实用的使用idea看源码的技巧相关推荐
- 【实用】面对枯燥的源码,如何才能看得下去?
作者:陈树义 来源:陈树义(ID:Spark-tree) 一个软件开发人员,工作到了一定的年限(一般是3.4年左右),如果他还没学会阅读源码,那么他就会遇到瓶颈.因为到了这个时候的开发,他应该不仅仅只 ...
- 4月,诚邀你参加源码共读,学会看源码,打开新世界!开阔视野
大家好,我是若川.很多关注我的新朋友可能不知道我组织了源码共读活动~ 也有很多人不知道我是谁.有人以为我是80后.有人以为我是全职自媒体等等.若川的 2021 年度总结,弹指之间 这篇文章写了我是16 ...
- 看源码,我为什么推荐IDEA?
作者:肥朝,来自:肥朝(ID:feichao_java) 1.条件断点 看源码的时候,经常遇到这个情况,源码中有个for循环,关键是这个list的size有时候长达数百个.但是我们只想debug一种情 ...
- 为什么要看源码、如何看源码,高手进阶必看
由于项目的需求,最近花了较多的时间来看开源项目的代码,在本文中,简单总结一下对为什么要看源码.如何看源码这两个问题的思考. 看源码的意义 看源码只是一种方法.手段,而不是目的.我也曾经给自己制定过&q ...
- idea 这么还原debug_看源码,我为什么推荐IDEA ?
1.条件断点 看源码的时候,经常遇到这个情况,源码中有个for循环,关键是这个list的size有时候长达数百个.但是我们只想debug一种情况.肥朝就曾经见过,在for循环中打了断点,一直按跳过,按 ...
- 若川诚邀你加源码共读群,帮助更多人学会看源码~
小提醒:若川视野公众号面试.源码等文章合集在菜单栏中间[源码精选]按钮,欢迎点击阅读,也可以星标我的公众号,便于查找. 回复pdf,可以获取前端优质书籍. 最近我创建了一个源码共读的前端交流群,希望尝 ...
- 找准切入点,调试看源码,事半功倍
关注若川视野,回复"pdf" 领取资料,回复"加群",可加群长期交流学习 最近写了很多源码分析相关的文章,React.Vue 都有,想把我阅读源码的一些心得分享 ...
- 11没有源码注释_我们为什么要看源码、应该如何看源码?
看源码的意义 看源码只是一种方法.手段,而不是目的.我也曾经给自己制定过"阅读xxx源码"的目标,现在看起来真的很蠢,一点不smart(specific.measurable.at ...
- 【肥朝】看源码,我为什么推荐IDEA?
本文并不评论Eclipse与IDEA孰好孰坏,但是由于肥朝平时都是使用IDEA开发的,所以推荐IDEA.这个和肥朝平时都是吃粤菜,所以推荐的都是粤菜为主,但是并不是说其他菜不好吃,肥朝不挑食! 1.条 ...
最新文章
- 商汤招股书详解:40名教授250+博士3593位工程师,AI收入亚洲第一,一年15亿研发工资支出...
- 计算机英语多层,多层式结构,multi-layer structure,在线英语词典,英文翻译,专业英语...
- 转 Wireshark和TcpDump抓包分析心得
- 02.规划过程组表格-需求管理计划
- 为什么QQ传文件比MSN快 揭密背后原因
- Python——有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- Mac下搭建jekyll环境
- 在C#中使用SerialPort类实现串口通信 遇到多线程问题
- Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护
- 干货集锦:200+生信范文、30+款软件、12类图片素材PPT,今年的SCI稳了!(附下载)...
- RabbitMQ AMQP MessageConverter 消息转换器 PDF Image Text 文本 图片 PDF json
- xcode配置最新版opencv
- 抽象类java启动线程_java 线程复习笔记
- android 控制音乐,Android音乐控制接口RemoteController使用
- python可以取代excel吗_10条Python命令全面取代Excel,妈妈再也不用担心我变成黑眼圈大表哥啦...
- C语言程序设计:现代方法阅读笔记
- java 1.8 64_JDK 1.8 64位 下载 安装 配置
- RainMeter学习1
- 遗传算法求解带时间窗的VRP问题(python)
- 考虑购买的 DELL 配置