天天看点

Netty框架中的@Skip使用说明

最近在学习netty框架,对着教程上写了个简单的netty应用,可是死活调试不成功,对着程序跟教程上看了几遍也找不到原因,后来又重新写了一遍,服务端程序终于调试成功,原因出在了那个@skip注释上了,代码如下:

这个实现类的每个方法上都有一个@skip注释,去掉注释之后,程序调试成功,使用netty开发的服务端程序可以正常接收和处理客户端连接。

被这个注释坑了一天了,于是特地去看了netty的源码,以下是关于@skip源码的说明:

大概意思就是说@skip注释用来在实现了handler的实现类中的方法上,程序运行过程中如果某个handler实现中的方法被@skip注释了,则此方法不会被 channelpipeline 对象调用,所以,这就是为什么我的服务端程序死活调试不成功的原因。我们可以看看netty内部执行过程中是如何处理@skip注释的,通过对源码文件全文扫苗,找到了对@skip注释的处理都集中在了abstractchannelhandlercontext中,下面贴出处理@skip相关的方法源码:

相信不少netty初学者都会碰到此类问题吧,希望这篇文章能对大家有点帮助。