天天看點

Netty架構中的@Skip使用說明

最近在學習netty架構,對着教程上寫了個簡單的netty應用,可是死活調試不成功,對着程式跟教程上看了幾遍也找不到原因,後來又重新寫了一遍,服務端程式終于調試成功,原因出在了那個@skip注釋上了,代碼如下:

這個實作類的每個方法上都有一個@skip注釋,去掉注釋之後,程式調試成功,使用netty開發的服務端程式可以正常接收和處理用戶端連接配接。

被這個注釋坑了一天了,于是特地去看了netty的源碼,以下是關于@skip源碼的說明:

大概意思就是說@skip注釋用來在實作了handler的實作類中的方法上,程式運作過程中如果某個handler實作中的方法被@skip注釋了,則此方法不會被 channelpipeline 對象調用,是以,這就是為什麼我的服務端程式死活調試不成功的原因。我們可以看看netty内部執行過程中是如何處理@skip注釋的,通過對源碼檔案全文掃苗,找到了對@skip注釋的處理都集中在了abstractchannelhandlercontext中,下面貼出處理@skip相關的方法源碼:

相信不少netty初學者都會碰到此類問題吧,希望這篇文章能對大家有點幫助。