Netty源码阅读计划——阅读环境搭建
Posted Java进阶攻略
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty源码阅读计划——阅读环境搭建相关的知识,希望对你有一定的参考价值。
什么是阅读环境呢?源码直接down下来不就可以阅读了吗?
阅读环境其实是调试环境。阅读源码只看不运行是不可能达到技术进阶的目的,把源码导入IDE,借助工具分析类之间的继承关系,运行官方提供的测试用例,边看边动手才是源码阅读的正确姿势。
1. 创建Netty仓库
源码地址
Netty的源码托管在github上:https://github.com/netty/netty。
【fork】仓库
点击【fork】按钮,在自己的github创建一个本地仓库。
这个仓库就是要阅读的源码,通过创建本地仓库,可以把自己在阅读源码过程中写下的注释和代码提交到github做持久化保存,永不丢失。
【clone】源码
在自己电脑本地使用git克隆源码。在克隆源码之前,注意切换分支到自己准备阅读的版本。这系列文章基于 4.0.x
分支, 4.1.34.Final-SNAPSHOT
版本。
2. 导入IDEA
开发工具这里选择了IDEA。
点击【File】->【New】->【Project from Existing Source】,选择源码所在目录。
选择【Maven】方式导入,点击【OK】,进入下一步。
勾选【Search for projects recursively】和【Import Maven projects automatically】,点击【Next】,进行下一步。
这里都是IDEA自动帮助勾选的,【jdk 8】和【mac】是自己电脑的环境,【downloadSources】是自己配置在Maven配置文件的东西,IDEA读取到的,点击【Next】,开始导入。
3. 验证
最后的源码阅读环境如下:
点击任一Netty官方测试类,运行/debug @Test
方法,查看是否能够正常运行。
4. 讨论
错误
在 codec-redis
模块中,类 FixedRedisMessagePool
报错:
出错的类如下:
import io.netty.util.collection.LongObjectHashMap;
import io.netty.util.collection.LongObjectMap;
解决办法是跳转到 common
模块中,使用Maven编译相应的类。
cd common
mvn clean compile
出错的原因参阅 common
模块的 src/java/templates/io/netty/util/collection
目录下的 .template
文件。
example
模块
在 example
模块中,提供了很多的官方使用用例。影响源码阅读的一个很重要的因素就是关于框架的使用熟练程度,因为不了解框架特性,那么一些源码在阅读过程中就会不解其意。
众多的官方用例中,以 echo
最简单。
启动 EchoServer
服务器,启动 EchoClient
客户端。可以查看到日志输入。
5. 写在最后
源码阅读贵在持之以恒,多动手调试,多动手记录。
以上是关于Netty源码阅读计划——阅读环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
Spring源码阅读:使用IDEA搭建Spring5.0.x源码阅读环境