天天看點

spring framework 究竟是個什麼玩意

術語:

​​

​spring​

​​是一個生态,包含spring xxx各種我們日常說的東西。通常我們老是說​

​“spring 如何如何”​

​​可以了解為一種簡稱,我們日常為了簡便經常把​

​spring framework​

​​簡稱為​

​spring​

​​。 但本文就不會再這麼說了,以下本文稱​

​spring framework​

​,以免歧義。

直接上結論:

​spring framework​

​​是一個​

​bean容器​

​。

如果要用最短的一句話來描述​

​spring framework​

​​的本質,那麼上面這句就是。

下面隻是一些進一步的闡述。

  • 它是​

    ​spring mvc​

    ​​、​

    ​spring boot​

    ​等多種所謂“spring應用”的基礎。
  • 具體來說,spring項目(各種依賴于​

    ​spring framework​

    ​​的應用)啟動時,會根據 xxxApplicationContext的類型,分别去從​

    ​xml配置檔案​

    ​​、​

    ​注解​

    ​​、或者​

    ​WEB_INF路徑下的配置檔案​

    ​​等處去讀取配置,最終根據配置,産生很多的​

    ​bean​

    ​​并維護起來,這也就是說它是​

    ​bean容器​

    ​的原因
  • ​spring framework​

    ​​所謂的​

    ​維護bean​

    ​​,可以大緻了解為最終維護在一個 Map<String,​

    ​BeanDefinetion​

    ​​> 裡面的。 可以大緻了解為 key就是​

    ​beanName​

    ​​,value 是​

    ​BeanDefinition​

    ​​。 其中​

    ​BeanDefinition​

    ​​ 可以立即為是​

    ​Bean對象​

    ​的一層封裝,也就是提供了更多方法而已。就像我們開發中,如果有一個類的功能太少,不足以提供足夠的功能,我們會再給它封裝一層class。就是這個簡單易懂的意思。
  • 然後,​

    ​spring framework​

    ​​在産生xxxContext的過程中,還會通過​

    ​beanFactoryPostProcessor​

    ​等方法可以把上面提到的這個Map暴露出來,我們就可以控制這些bean的幾乎任意行為。
  • 另外,所謂​

    ​擴充spring framework​

    ​​,如果​

    ​beanFactoryPostProcessor​

    ​​的自由程度依然不滿足的話,可以自己寫一個​

    ​xxxContext​

    ​​,繼承​

    ​spring framework​

    ​裡面的xxxContext,重寫各個方法,那就可以在産生bean的各個節點進一步控制,理論上基本上更加為所欲為,可任意操作了。

以下上傳一個我在小組裡做技術分享時的一個自制PPT。

​​spring framework.pptx​​

繼續閱讀