術語:
spring
是一個生态,包含spring xxx各種我們日常說的東西。通常我們老是說
“spring 如何如何”
可以了解為一種簡稱,我們日常為了簡便經常把
spring framework
簡稱為
spring
。 但本文就不會再這麼說了,以下本文稱
spring framework
,以免歧義。
直接上結論:
spring framework
是一個 bean容器
。
spring framework
bean容器
如果要用最短的一句話來描述
spring framework
的本質,那麼上面這句就是。
下面隻是一些進一步的闡述。
- 它是
、spring mvc
等多種所謂“spring應用”的基礎。spring boot
- 具體來說,spring項目(各種依賴于
的應用)啟動時,會根據 xxxApplicationContext的類型,分别去從spring framework
、xml配置檔案
、或者注解
等處去讀取配置,最終根據配置,産生很多的WEB_INF路徑下的配置檔案
并維護起來,這也就是說它是bean
的原因bean容器
-
所謂的spring framework
,可以大緻了解為最終維護在一個 Map<String,維護bean
> 裡面的。 可以大緻了解為 key就是BeanDefinetion
,value 是beanName
。 其中BeanDefinition
可以立即為是BeanDefinition
的一層封裝,也就是提供了更多方法而已。就像我們開發中,如果有一個類的功能太少,不足以提供足夠的功能,我們會再給它封裝一層class。就是這個簡單易懂的意思。Bean對象
- 然後,
在産生xxxContext的過程中,還會通過spring framework
等方法可以把上面提到的這個Map暴露出來,我們就可以控制這些bean的幾乎任意行為。beanFactoryPostProcessor
- 另外,所謂
,如果擴充spring framework
的自由程度依然不滿足的話,可以自己寫一個beanFactoryPostProcessor
,繼承xxxContext
裡面的xxxContext,重寫各個方法,那就可以在産生bean的各個節點進一步控制,理論上基本上更加為所欲為,可任意操作了。spring framework
以下上傳一個我在小組裡做技術分享時的一個自制PPT。
spring framework.pptx