1. 程式人生 > >Spring最核心的功能是什麼?使用Spring框架的最核心的原因是什麼?

Spring最核心的功能是什麼?使用Spring框架的最核心的原因是什麼?

Spring 框架中核心元件有三個:Core、Context 和 Beans。其中最核心的元件就是Beans, Spring提供的最核心的功能就是Bean Factory。

Spring 解決了的最核心的問題就是把物件之間的依賴關係轉為用配置檔案來管理,也就是Spring的依賴注入機制。這個注入機制是在Ioc 容器中進行管理的。

Bean 元件是在 Spring 的 org.springframework.beans 包下。這個包主要解決了如下功能:Bean 的定義、Bean 的建立以及對 Bean 的解析。對 Spring 的使用者來說唯一需要關心的就是 Bean 的建立,其他兩個由 Spring 內部機制完成。 Spring Bean 的建立採用典型的工廠模式,他的頂級介面是 BeanFactory。

BeanFactory 有三個子類:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory。但是從上圖中我們可以發現最終的預設實現類是 DefaultListableBeanFactory,他實現了所有的介面。那為何要定義這麼多層次的介面呢?查閱這些介面的原始碼和說明發現,每個介面都有他使用的場合,它主要是為了區分在 Spring 內部在操作過程中物件的傳遞和轉化過程中,對物件的資料訪問所做的限制。例如 ListableBeanFactory 介面表示這些 Bean 是可列表的,而 HierarchicalBeanFactory 表示的是這些 Bean 是有繼承關係的,也就是每個 Bean 有可能有父 Bean。AutowireCapableBeanFactory 介面定義 Bean 的自動裝配規則。這四個介面共同定義了 Bean 的集合、Bean 之間的關係、以及 Bean 行為。

Bean 的定義就是完整的描述了在 Spring 的配置檔案中你定義的 <bean/> 節點中所有的資訊,包括各種子節點。當 Spring 成功解析你定義的一個 <bean/> 節點後,在 Spring 的內部他就被轉化成 BeanDefinition 物件。以後所有的操作都是對這個物件完成的。Bean 的解析過程非常複雜,功能被分的很細,因為這裡需要被擴充套件的地方很多,必須保證有足夠的靈活性,以應對可能的變化。Bean 的解析主要就是對 Spring 配置檔案的解析。