最实用的使用idea看源码的技巧
很多时候新手看源码都会被绕晕, 本人也踩过这个坑,经过摸索 总结出来一些实用的看源码过程中的debug技巧。首先,重点是带着问题去看,不然无处下手,都不知道入口是哪举例:我想看spring容器getBean时候的过程。是如何getbean的,如果有切面,又是如何实现的。那么带着这个问题我就需要去看applicationContext.getBean("userService");这...
很多时候新手看源码都会被绕晕, 本人也踩过这个坑,经过摸索 总结出来一些实用的看源码过程中的debug技巧。
首先,重点是带着问题去看,不然无处下手,都不知道入口是哪
举例:
我想看spring容器getBean时候的过程。是如何getbean的,如果有切面,又是如何实现的。
那么带着这个问题
我就需要去看
applicationContext.getBean("userService");
这行代码。
新手往往直接就点进去了,
然而再点进去之后是一个接口
这个时候就开始懵逼了
这个接口有n个实现,到底是走哪个??? 具体怎么走?
这个时候,第二个问题,不熟的源码,一定要开启debug模式,断点去看,因为框架里面的接口和抽象类往往有多个实现类,不到真正运行的时候,新手是看不出来是用的哪个实现类的。 使用step into可以进入方法内部, 最最注意的 在接口处打断点,debug的时候可以直接跳到该接口的实现类
例子:
打上断点debug
点进去getBean方法
此时点单步调试,先进来这段代码
进来之后
此时如果直接点getbean ,进行去是一个接口,那么可以在接口处打上断点,这样可以直接跳到该接口的实现类
然后点
就能进入到getBean实现类的方法
因此可以选择单步一步步看下去,也可以在接口处打上断点 直接跳到实现类。
注意:该方法也可能会被spring启动过程的其他类调用,因此加上断点之后,可能进入断点的时候不是自己的代码执行流程,因此,要么就是在启动之后,到了getBean那一步去加上断点,要么就是在断点上加上条件 过滤掉不是自己条件的调用
更多推荐
所有评论(0)