攤牌了!我要手寫一個“Spring Boot”
本文轉載自微信公眾號「JavaGuide」,作者Guide哥。轉載本文請聯系JavaGuide公眾號。
01 重構 JavaGuide
我們經常會對自己早期寫的代碼感覺惡心,這是導致很多項目爛尾的很重要的一個原因之一。
寫作也是一樣,我也經常覺得自己早期寫的文章像一坨翔。造成這個現象的原因很簡單!我覺得主要可能有兩方面原因:
- 自己沉淀的知識更多,對于某個知識點的理解更加深刻。
- 不同于其他類型文章,技術類文章本身就需要不斷完善,文章內容才會更好。
所以,最近幾個月我一直抽空對 JavaGuide 上早期的一些文章進行大篇幅重構,比如 Java 基礎、Java 集合框架、 Zookeeper 、Redis 等等。
畢竟,時間有限,自己也還是把主要精力放在寫代碼上。所以,部分文章還沒有開始重構,比如數據結構部分的內容。
就非常期待小伙伴們一起貢獻出自己的力量啊!讓 Guide哥 能多點時間寫代碼,嘿嘿!
02 寫了個簡單的 RPC 框架
我在大學的時候,就使用過 Dubbo 這類 RPC 框架,對于 RPC 框架的原理也有一點的認識。
于是乎!疫情那會,工作也不是很忙,我就想著說自己要不要也寫一個 RPC 框架玩玩。
說做就做!前前后后花了 3 個月,我利用業余時間手寫一個簡單的 RPC 框架(玩具),名字叫做 guide-rpc-framework。這個框架是基于 Netty+Kyro+Zookeeper 并且整合了 Spring 來做的。
講真!確實,花費了不少精力。雖然,這玩意的原理不難,但是,想寫好確實要花時間。
目前的話,這個項目已經有 0.7k 的 star。感謝小伙伴們的支持!
像這樣的開源項目,放到簡歷上絕對是加分項!
而且,我在自己去寫 RPC 框架的時候,加深了自己對于 RPC 框架原理的認識。具體落實到代碼實現的過程中,遇到了很多問題,解決問題的過程中也提高了自己的編程能力和解決問題的能力。總而言之,造輪子是一種特別能夠提高自己系統編程能力的手段。
03 寫一個簡易版的“Spring Boot”是的!我準備開始造下一個輪子了,一個簡易版的“Spring Boot”。名字我都起好了,叫做“jsoncat”。
名字沒有特別含義,只是因為這個框架目前定位是只返回 json 類型數據給前端,所以就在名字中加上了 json。
其實,說是簡易版的 Spring Boot ,不過是簡單模仿 Spring Boot 提供的功能,自己手寫一個類似的輕量級 HTTP 框架而已。(功能、生態、穩定性等方面肯定不能和 Spring Boot 對比啦!)
具體實現的話,先簡單聊聊,后面會單獨寫文章來分享。我會使用 Netty 來寫一個簡易的 HTTP Server,主要用來處理 HTTP 請求。其他模塊的話,我會在兼顧代碼可讀性的情況下,盡量減少第三方依賴。所以,整個框架會比較輕量。
另外,代碼也會盡量寫直白點,不故意秀技。我也會將自己寫這個簡易的 HTTP 框架學到的東西分享出來。當然啦!大家想要看源碼的話,我也會將其開源。
寫這個東西只是自己個人的興趣愛好使然,主要也是為了提高自己的編碼能力。推薦小伙伴們也要盡量能夠將自己的想法付諸于行動。
理論固然重要,但是脫離于實踐的理論并不可靠。
相比于 CRUD ,自己造個輪子,肯定是更有意思,也更能鍛煉自己的編程能力和解決問題的能力。
目前的想法是,第 1 版至少是能夠讓其正確處理 Get 請求 和 Post 請求。目前的話,我基本已經寫完了。相比于之前實現的 RPC 框架來說,這個總體來看,還是稍微簡單一些。

用自己寫的框架處理了一次Post請求