Spring系列第三講 Spring容器基本使用及原理
IOC容器
IOC容器是具有依賴注入功能的容器,負責物件的例項化、物件的初始化,物件和物件之間依賴關係配置、物件的銷燬、對外提供物件的查詢等操作,物件的整個生命週期都是由容器來控制。我們需要使用的物件都由ioc容器進行管理,不需要我們再去手動透過new的方式去建立物件,由ioc容器直接幫我們組裝好,當我們需要使用的時候直接從ioc容器中直接獲取就可以了。
那麼spring ioc容器是如何知道需要管理哪些物件呢?
需要我們給ioc容器提供一個配置清單,這個配置支援xml格式和java註解的方式,在配置檔案中列出需要讓ioc容器管理的物件,以及可以指定讓ioc容器如何構建這些物件,當spring容器啟動的時候,就會去載入這個配置檔案,然後將這些物件給組裝好以供外部訪問者使用。
這裡所說的IOC容器也叫spring容器。
Bean概念
由spring容器管理的物件統稱為Bean物件。Bean就是普通的java物件,和我們自己new的物件其實是一樣的,只是這些物件是由spring去建立和管理的,我們需要在配置檔案中告訴spring容器需要建立哪些bean物件,所以需要先在配置檔案中定義好需要建立的bean物件,這些配置統稱為bean定義配置後設資料資訊,spring容器透過讀取這些bean配置後設資料資訊來構建和組裝我們需要的物件。
Spring容器使用步驟
-
引入spring相關的maven配置
-
建立bean配置檔案,比如bean xml配置檔案
-
在bean xml檔案中定義好需要spring容器管理的bean物件
-
建立spring容器,並給容器指定需要裝載的bean配置檔案,當spring容器啟動之後,會載入這些配置檔案,然後建立好配置檔案中定義好的bean物件,將這些物件放在容器中以供使用
-
透過容器提供的方法獲取容器中的物件,然後使用
Spring容器物件
spring內部提供了很多表示spring容器的介面和物件,我們來看看比較常見的幾個容器介面和具體的實現類。
BeanFactory介面
spring容器中具有代表性的容器就是BeanFactory介面,這個是spring容器的頂層介面,提供了容器最基本的功能。
常用的幾個方法
ApplicationContext介面
這個介面繼承了BeanFactory介面,所以內部包含了BeanFactory所有的功能,並且在其上進行了擴充套件,增加了很多企業級功能,比如AOP、國際化、事件支援等等。。
ClassPathXmlApplicationContext類
這個類實現了ApplicationContext介面,注意一下這個類名稱包含了ClassPath Xml,說明這個容器類可以從classpath中載入bean xml配置檔案,然後建立xml中配置的bean物件,一會後面的案例就會用到這個類。
AnnotationConfigApplicationContext類
這個類也實現了ApplicationContext介面,注意其類名包含了Annotation和config兩個單詞,上面我們有說過,bean的定義支援xml的方式和註解的方式,當我們使用註解的方式定義bean的時候,就需要用到這個容器來裝載了,這個容器內部會解析註解來構建構建和管理需要的bean。
註解的方式相對於xml方式更方便一些,也是我們比較推薦的方式,後面我們會大量使用這種方式,具體會詳解。
案例
來個helloworld來詳細看一下spring如何使用。
建立專案spring-series
使用idea建立maven專案spring-series,專案座標:
spring-series專案中建立一個子模組lesson-001,專案maven父子結構
spring-series/pom.xml
目前我們使用spring最新的版本5.2.3.RELEASE,需要引入spring提供的3個構件
lesson-001\pom.xml
lesson-001中建立HelloWord類
HelloWord中我們建立了一個say方法,裡面會輸一段文字。 /nanning/
使用spring容器
下面我們透過spring容器來建立HelloWord物件,並從容器中獲取這個物件,然後呼叫其say方法輸出文字。
建立bean xml配置檔案
新建一個檔案,檔案路徑如下: /shanxi/
bean.xml內容如下:
上面就是bean的定義檔案,每個xml中可以定義多個bean元素,透過bean元素定義需要spring容器管理的物件,bean元素需指定id和class屬性 /audio/
-
id表示這個bean的標識,在容器中需要唯一,可以透過這個id從容器中獲取這個物件;
-
class用來指定這個bean的完整類名
上面的配置檔案中我們定義了一個helloWorld標識的HellWorld型別的bean物件。
建立測試類
建立一個Client類,如下:
上面main方法中有容器的詳細使用步驟,需要先建立容器物件,建立容器的物件的時候需要指定bean xml檔案的位置,容器啟動之後會載入這些配檔案,然後將這些物件構建好。 /harm/
程式碼中透過容器提供的getBean方法從容器中獲取了HellWorld物件,第一個引數就是xml中bean的id,第二個引數為bean對應的Class物件。
執行輸出
總結
本文主要介紹了spring容器的概念、bean的概念、常見的spring容器,以及spring容器的使用步驟;下一篇我們將詳解bean的定義。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2730698/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring容器系列-FactoryBean使用/原理SpringBean
- Spring容器系列-啟動原理Spring
- Spring IOC容器基本原理Spring
- Spring 系列(二):Spring MVC的父子容器SpringMVC
- 03-Spring IOC容器的基本使用(註解的使用)Spring
- spring JUnit 基本原理Spring
- Spring XmlBeanFactory 容器的基本實現SpringXMLBean
- Spring核心系列之容器事件Spring事件
- Spring系列之IOC的原理及手動實現Spring
- Spring系列之AOP的原理及手動實現Spring
- Spring系列之DI的原理及手動實現Spring
- Spring系列.AOP原理簡析Spring
- Spring原始碼之容器的基本實現Spring原始碼
- 探索Spring系列(一)Spring容器和Bean的生命週期SpringBean
- Spring入門(七):Spring Profile使用講解Spring
- Spring Boot Admin使用及心跳檢測原理Spring Boot
- Spring系列.AOP使用Spring
- spring容器Spring
- 原始碼學習之Spring容器建立原理原始碼Spring
- spring5入門與實踐第三講Spring的其他特性Spring
- Spring原始碼系列-容器重新整理Spring原始碼
- 2、Spring使用+ioc容器配置使用1Spring
- Spring-Context之四:Spring容器及bean的定義SpringContextBean
- Spring核心原理之IoC容器初體驗(2)Spring
- spring ioc原理-容器初始化的大致流程Spring
- Spring Cloud教程 第三彈 Ribbon工作原理SpringCloud
- Spring系列之AOP基本主要類概述Spring
- Spring Bean容器SpringBean
- Spring Cache的基本使用與分析Spring
- Spring Security 入門原理及實戰Spring
- 十二、Spring Boot 嵌入式 Servlet 容器啟動原理Spring BootServlet
- spring原始碼深度解析— IOC 之 容器的基本實現Spring原始碼
- Spring 系列之jdbcTemplate的使用SpringJDBC
- 面試系列-Spring Cloud 的核心架構原理面試SpringCloud架構
- Spring原理與原始碼分析系列(六)- Spring AOP入門與概述Spring原始碼
- 深入理解Spring IOC容器及擴充套件Spring套件
- Spring系列第十三講 使用繼承簡化bean配置(abstract & parent)Spring繼承Bean
- Spring系列之初識Spring Spring概述Spring