springboot如果要說是springframework的封裝那麼也不全是,個人認為從思想上來說是兩個東西。
springboot主要具備如下特性
1.自動裝配
2.內建tomcat等web容器
3.與devops天然整合,這也可以認為是微服務的特點。
下面咱們看下**
public
class
}
public
(class<
?>
primarysources,
string[
] args)
public
(resourceloader resourceloader, class<
?>..
. primarysources)
上面的重點其實都在setinitializers與setlisteners
這兩個的初始化其實是spi的spring實現
getspringfactoriesinstances這個方法挺有意思的
原理就是獲取配置檔案下type是哪一類的key配置的class名,然後通過反射例項化。
咱們繼續往下看run方法
上一段**,在**裡面有注釋。先看看
/**
*/(string.
.. args)
, context)
;//第五步:準備容器
preparecontext
printedbanner)
;//第六步:重新整理容器
refreshcontext
(context)
;//第七步:重新整理容器後的擴充套件介面
afterrefresh
; stopwatch.
stop()
;if(this
.logstartupinfo)
listeners.
started
(context)
;callrunners;}
catch
(throwable ex)
trycatch
(throwable ex)
return context;
}
總結一下
這篇是先大概將springboot的大流程說一下,從俯視角度看全域性做到心中有數。
我們後續再詳細拆分一小塊一小塊的細寫。
不然一上來就每行**的過,這樣看spring原始碼容易陷進去出不來。
導致最後感覺啥都不會
歡迎掃碼加入知識星球繼續討論
SpringBoot2 擴充套件介面
判斷乙個框架或者程式的好壞直觀的方法就是看其擴充套件性如何。毫無疑問spring擴充套件性這方面做的不錯。說到擴充套件主要還是在容器的refresh這塊,也有listener 這一塊先放放 實現原則嚴格按照開閉原則,內部修改關閉,對擴充套件開放 咱們先看一張流程圖 如上圖中主要的畫出來了具體的執行流...
spring boot 2 基礎應用
restcontroller相當於 responsebody controller。使用spring initializer快速建立spring boot專案2 yaml語法 1 基本語法 k 空格 v 表示 對鍵值對 空格必須有 以空格的縮進來控制層級關係 只要是左對齊的一 列資料,都是同 個層級...
springBoot2 自動配置
雖然我們127個場景的所有自動配置啟動的時候預設全部載入 xautoconfiguration 但仍需按照條件裝配規則 conditional 按需配置。總結 springboot先載入所有的自動配置類 xxautoconfiguration 每個自動配置類按照條件進行生效,預設都會繫結配置檔案指定...