原创 Spring Boot2.0版本源碼(八):Spring Boot的註解的解析出Bean之核心方法

在上一篇博客Spring Boot2.0版本源碼(八):Spring Boot的註解的解析出Bean之整體流程,我們知道里面解析各種註解使用的是ConfigurationClassParser解析器的parse(candidate

原创 Spring Boot2.0版本源碼(六):Spring Boot的啓動加載器

自定義啓動加載器 實現ApplicationRunner接口,重寫run()方法即可 SpringApplication.run()方法中有一個callRunners(context, applicationArguments)

原创 Spring Boot2.0版本源碼(三):Spring Boot監聽器的實現

1. 介紹監聽器的組成部分 springboot的監聽器都是通過ApplicationListener實現的類完成對監聽事件的處理的,看得出來,所有的監聽事件都是ApplicationEvent ApplicationEvent

原创 Spring Boot2.0版本源碼(四):Spring Boot的Bean的解析之refresh()方法

1. IOC思想 使用一個IOC去管理抽象bean的初始化,下面就是用一個@autowired註解完成animal的初始化,他可能是Dog也可能是Cat,我們無需關心它使用的是哪一個實現。以此降低類之間的耦合性。 下面是注入be

原创 Spring Boot2.0版本源碼(五):Spring Boot的Bean的解析之bean的實例化過程

大致介紹了一下bean實例化重要步驟: /** * Return an instance, which may be shared or independent, of the specified bean. * @par

原创 Spring Boot2.0版本源碼(二):Spring Boot初始化器

1. 系統初始化器 通過ApplicationContextInitializer類可以實現在springboot容器刷新之前註冊屬性 2. 演示 FirstInitializer類實現ApplicationContextIni

原创 Netty源碼(十五):Recycler工具類

1. Recycler工具類的使用 Recycler爲了避免我們重複的創建對象,使用對象池將我們使用過的數據保存起來,下一次就可以拿出來使用 public class TestRecycler { // 對象池 p

原创 Netty源碼(十二):斷開連接

1.正常關閉的邏輯 關閉連接會進入read狀態 爲了直接觀察到關閉操作,我們註釋上面的代碼 關閉最後也會進入到read事件裏面 1.allocHandle.lastBytesRead() <= 0這一行會發現數據小於零,釋放

原创 Spring Boot2源碼(一):Spring Boot啓動整體流程預覽

1. 項目啓動 1.框架初始化,也就是new Application()的過程 2.框架啓動,也就是new Application(),run()方法執行 3.自動裝配 2.框架初始化 1.配置資源加載器:用於加載resourc

原创 Netty源碼(十四):FastThreadLocal工具類

1. 寫一個程序來驗證FastThreadLocal功能 public class TestFastThreadLocal { // FastThreadLocal初始化 public static FastThr

原创 Netty源碼(十三):關閉服務

關閉流程: 包括了bossGroup和workGroup的關閉 開始源碼,按照下面的方式完成操作,啓動EchoServer 1. 進入workerGroup.shutdownGracefully(); 不斷跟進源碼,進入到了S

原创 Netty源碼(十一):寫數據

write是把數據寫入到一個buffer。 flush就是將數據發出去。 writeAndFlush就是寫入數據立馬發出去。 下面是拿快遞和寫數據的對比: 發送數據分爲三部分: 1.unflushedEntry所指向的entr

原创 Netty源碼(七):啓動源碼

1. 主線 our thread就是我們自己寫的netty服務器的主線程的代碼 2. 啓動 在下面三處打上斷點 2.1 selector初始化是在NioEventLoopGroup初始化 運行程序:發現,查看NioEvent

原创 Netty源碼(五):keepalive和Idle處理

1.keepalive和Idle檢測 keepalive機制:如果對方突然無響應,我們需要發送一個探測幀去查看對方是是否下線。 Idle檢測:如果你發送數據給對方,對方無響應,你會等一段時間(Idle檢測),如果對方無響應,你就會

原创 Netty源碼(十):業務處理的過程pipeline

根據上一次接收數據邏輯的學習,可以總結下面的流程,紅色就是我們學習的地方。 pipeline,下面以inbound和outbound爲例。pipeline本質就是一個鏈表,有head和tail,中間是很多個context,每個c