[java]spring三大核心元件
Bean元件
元件作用
Bean元件在Spring中的Beans包下,為了解決三件事。Bean的建立,Bean的定義,Bean的解析。最關心的就是Bean的建立。
Bean的建立
1、工廠模式的實現,頂層介面是:BeanFactory
雖然最終實現類是DefaultListableBeanFactory,但是其上層介面都是為了區分在Spring內部物件的傳遞和轉換的過程,對物件的資料訪問所做的限制。
ListableBeanFactory:可列表的
HierarchicalBeanFactory:可繼承的
AutowriteCapableBeanFactory:可自動裝配的
這四個介面,共同定義了Bean的集合,Bean之間的關係,Bean的行為。
Bean的定義
Bean的定義完整的描述在Spring配置檔案中節點中,包括子節點等。
在Spring內部它被轉換成BeanDefinition物件,後續操作都是對這個物件操作。
主要是BeanDefinition來描述
Bean的解析
BeanDefinitionReader
Bean的解析就是對Spring配置檔案以及對Tag的解析。
Context元件
元件作用
在Spring中的context包下,為Spring提供執行環境,用以儲存各個物件狀態。
Context作為Spring的IOC容器,整合了大部分功能或說大部分功能的基礎,完成了以下幾件事:
1、標識一個應用環境
2、利用BeanFactory建立Bean物件
3、儲存物件關係表
4、能夠捕獲各種事件
ApplicationContext是context的頂級父類,除了能標識一個應用的基本資訊外,還繼承了五個介面,擴充套件了Context的功能。並且繼承了BeanFactory,說明Spring容器中執行的主體物件是Bean,另外還繼承了ResourceLoader,可以讓ApplicationContext可以訪問任何外部資源。
ApplicationContext子類
1、ConfigurableApplicationContext:表示Context是可以修改的,在構建Context,使用者可以動態新增或者修改已有的配置。
2、WebApplicationContext:為Web準備的Context,可以訪問ServletContext。
Core元件
訪問資源
1、它包含了很多關鍵類,一個重要的組成部分就是定義的資源的訪問方式,這種把所有資源都抽象成了一個介面的方式很值得學習。
2、Resource介面封裝了各種可能的資源型別,繼承了InputStreamSource介面。
載入資源的問題,也就是資源載入者的統一,由ResourceLoader介面來完成。
預設實現是:DefaultResourceLoader
Core資源的載入
Core元件將解析等工作委託給了ResourcePatternResolver來完成,作為一個接頭人,把資源的載入,解析和定義整合在了一起便於其他元件使用。