當前位置:編程學習大全網 - 編程語言 - 深層理解Spring 控制反轉和依賴註入,這壹篇文夠了

深層理解Spring 控制反轉和依賴註入,這壹篇文夠了

控制反轉(IOC)旨在提供壹種更簡單的機制,來設置組件的依賴項,並在整個生命周期管理這些依賴項。通常,控制反轉可以分成兩種子類型:依賴註入(DI)和依賴查找(DL),這些子類型各自又可以被進壹步分解為 IOC 服務的具體實現

依賴拉取(Dependency Pull),即根據需要,從註冊表中提取依賴項,以下代碼顯示了基於 Spring 的依賴拉取

上下文依賴查找(contextualized dependency lookup,CDL),同樣屬於依賴查找的子類型,和依賴拉取有點類似,但在 CDL 中,查找是針對管理資源的容器執行的,這個容器通常由應用程序服務器或框架(Tomcat、JBoss、Spring)提供,比如以下代碼顯示了壹個提供依賴查找服務的容器接口

組件需要實現該接口,當容器準備好將依賴項傳遞給組件時,會依次調用每個組件的 performLookup() 方法,然後組件就可以使用 Container 接口查找所需的依賴項

當在組件的構造函數中提供依賴項時,就會發生構造函數依賴註入

Ioc 容器通過 JavaBean 樣式的 setter 方法註入組件的依賴項

在 Spring 中,還支持另壹種被稱為字段註入(field injection)的註入類型,在後面學習使用 @Autowire 註解進行自動裝配時將介紹該註入類型

Spring 的依賴註入容器的核心是 BeanFactory,它負責管理組件,包括依賴項以及它們的生命周期。如果我們想獲得壹個組件(Bean),就必須創建壹個實現了 BeanFactory 接口的實例,並對其進行配置

雖然 BeanFactory 可以通過編程方式配置,但更常見的做法是使用某種配置文件在外部對其進行配置。Bean 配置可以由實現 BeanDefinition 接口的類的實例來表示,對於任何實現了 BeanDefinitionReader 接口的 BeanFactory 實現類來說,都可以使用 PropertiesBeanDefinitionReader 或 XmlBeanDefinitionReader 從配置文件讀取 BeanDefinition 數據

定義壹組接口:

接下來我們來看壹看,Spring 的 BeanFactory 如何被初始化並用於獲取 Bean 實例

ApplicationContext 接口是 BeanFactory 的壹個擴展,除了 DI 服務外,還提供其他如事務和 AOP 等服務。在開發基於 Spring 的應用程序時,建議通過 ApplicationContext 接口與 Spring 交互

標記告訴 Spring 掃描代碼,從而找到 @Component 等註解註入的 bean,以及支持在指定包(及其所有子包)下使用 @Autowire 等註解的 bean

配置類使用 @Configuration 註解,並包含用 @Bean 註解的方法,這些方法由 IOC 容器直接調用來實例化 bean,bean 名稱與用於創建它的方法的名稱相同

如果想從該類中讀取配置信息,需要壹個不同的 ApplicationContext 實現

使用 XML 配置來配置 setter 註入,需要在 標記下指定 標記,為其註入壹個依賴項

如果使用註解,只需要向 setter 方法添加壹個 @Autowired 註解

使用 XML 方式註入

  • 上一篇:整體櫥櫃用什麽牌子的好點?想請教下知道的朋友?
  • 下一篇:12歲孩子六壹兒童節禮物
  • copyright 2024編程學習大全網