服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java源码跟踪阅读技巧【值得收藏】

Java源码跟踪阅读技巧【值得收藏】

2021-06-15 11:04Java教程网 Java教程

今天跟大家分享一下我平时阅读源码的几个小技巧,对于阅读Java中间件如Spring、Dubbo等框架源码的同学有一定帮助。本文基于Eclipse IDE,感兴趣的朋友跟随小编一起看看吧

今天跟大家分享一下我平时阅读源码的几个小技巧,对于阅读java中间件如spring、dubbo等框架源码的同学有一定帮助。

本文基于eclipse ide,我们每天都使用的ide其实提供了很多强大的功能,掌握它们,往往能够事半功倍。

1、quick type hierarchy 快速查看类继承体系。

快捷键:ctrl + t

Java源码跟踪阅读技巧【值得收藏】

查看类很多人可能都知道,可源码阅读的时候更多用来查看方法体系更重要,可以方便快速的定位到方法的实现类。如:

Java源码跟踪阅读技巧【值得收藏】

此时如果想查看getbean()方法如何实现,可能会让你失望。结果如下:

Java源码跟踪阅读技巧【值得收藏】

进入到了beanfactory的接口定义方法,什么也没有。

此时我们直接在getbean上 ctrl+t :

Java源码跟踪阅读技巧【值得收藏】

可以看到其实现的子类,点击子类进去即可。此方法还适用于框架中非常常见的模板方法模式,在抽象类中定义的模板方法,用这招轻松找到实现类。

当然还有详细的open type hierarchy

Java源码跟踪阅读技巧【值得收藏】

会在左侧视图里面展示更好的type view:

Java源码跟踪阅读技巧【值得收藏】

2、open call hierachy 打开调用层级

快捷键:ctrl+alt+h

Java源码跟踪阅读技巧【值得收藏】

个人认为这是阅读源码最有用的利器,掌握它,可以轻松游走于各种方法调用之间。然而从我身边的朋友来看, 很多人都不知道他的存在。

open call hierachy 查看结果如下,调用关系清晰明朗,可以直接定位到调用的地方。

Java源码跟踪阅读技巧【值得收藏】

3、debug 断点的灵活使用

断点调式时,心中必须很清楚f5、f6、f7、f8的作用,不然要么迷失于源码之中,要么什么都没看清就走完了。

重新啰嗦一下它们的作用:

f5 step into,单步进入。进入到某个方法里面;

f6 step over,单步结束。一行一行的执行代码,入门时很多人只会一行一行走;

f7 step return,跳出放发。进入到某个方法里面时,如果发现这个方法没有你想看的东西,或者已经看到了你想看的,直接f7,跳出到方法外;

f8 resume,继续往下执行。往下执行,遇到下一个断点时再停下来,没有则一直运行完。

调试时我们可能会经常遇到loadclass的情况:

Java源码跟踪阅读技巧【值得收藏】

在40行想进入classpathxmlapplicationcontext构造方法,f5不料进入了类加载:

Java源码跟踪阅读技巧【值得收藏】

熟悉类加载的同学会很熟悉,不熟悉类加载机制的也不要慌,这是说明你调试的类第一次被加载,这时候我们f7跳出类加载,回到40行。

Java源码跟踪阅读技巧【值得收藏】

这个时候再按f5会真正进入classpathxmlapplicationcontext构造方法。

当我们断点跟踪spring这种源码的时候,一定要有节奏,以优先找到整体脉络为准,不要一直的f5进入每一行细看,f5下去,几天都走不完spring。能熟练在spring这种框架中f5、f6、f7、f8,就离弄懂他不远了。

dubug的时候还应该注意debug视图的线程栈:

Java源码跟踪阅读技巧【值得收藏】

这个视图能够让你在走得比较深的时候,可以一眼看出自己怎么进来的,当前位于什么方法里等信息,还可以点击对应的代码行数进入查看。

总结,这是我使用ide跟踪源码的几个小技巧,尤其是第二点,是很实用的,希望对大家在进行源码跟踪时有一定帮助。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

延伸 · 阅读

精彩推荐