學Spring中的Bean,這一篇就夠了

Spring中的Bean

Bean的本質就是Java中的類,而Spring中的Bean其實就是對實體類的引用,來生產Java類對象,從而實現生產和管理Bean 。

Spring 容器支持 XMLProperties 兩種格式的配置文件,在實際開發中,最常使用的就是
XML 格式的配置方式。這種配置方式通過 XML 文件來註冊並管理 Bean 之間的依賴關係。

Bean的配置

XML配置文件的根元素是<beans><beans>中包含了多個<bean>子元素,每一個<bean>子元素定義了一個Bean,並描述了該Bean如何被裝配到Spring容器中。

關於<beans>元素的常用屬性如下表所示:
在這裏插入圖片描述

Bean的實例化

在面向對象的程序中,想要使用某個對象,就需要先實例化這個對象。同樣,在Spring中,要想使用容器中的Bean,也需要實例化Bean。
實例化Bean有三種方式,分別爲構造器實例化、靜態工廠方式實例化和實例工廠方式實例化(其中最常用的是構造器實例化)。
構造器實例化是指 Spring 容器通過 Bean 對應類中默認的無參構造方法來實例化 Bean。
靜態工廠實例化 要求開發者創建一個靜態工廠的方法來創建 Bean 的實例,其 Bean 配置中的 class 屬性所指定的不再是 Bean 實例的實現類,而是靜態工廠類,同時還需要使用 factory-method 屬性來指定所創建的靜態工廠方法。
實例工廠方式實例化不再使用靜態方法創建 Bean 實例,而是採用直接創建 Bean 實例的方式 同時,在配置文件中,需要實例化的 Bean也不是通過 class 屬性直接指向的實例化類,而是通過 factory - bean 屬性指向配置的實例工廠,然後使用 factory - method 屬性確定使用工廠中的哪個方法。

Bean的作用域

在這裏插入圖片描述
singleton是Spring容器默認的作用域,當Bean的作用域爲singleton時,Spring容器就只會存在一個共享的Bean實例。singleton作用域對於無會話狀態的Bean(如Dao 組件、Service組件)來說,是最理想的選擇。

<bean id="scope" class="com.itheima.scope.Scope" scope="singleton"/>

對需要保持會話狀態的Bean,應該使用prototype作用域。在使用prototype作用域時,Spring容器會爲每個對該Bean的請求都創建一個新的實例。

Bean的生命週期

singleton作用域:Spring容器可以管理singleton作用域的Bean的生命週期,在此作用域下,Spring能夠精確的知道該Bean何時被創建,何時初始化完成,以及何時被銷燬。
prototype作用域:prototype作用域的Bean,Spring只負責創建,當容器創建了Bean實例後,Bean的實例就交給客戶端代碼來管理,Spring容器將不再跟蹤其生命週期。
在這裏插入圖片描述

Bean的裝配方式

Bean的裝配可以理解爲依賴關係注入,Bean的裝配方式即Bean依賴注入的方式。
Spring容器支持多種形式的Bean的裝配方式,如基於XML的裝配、基於註解(Annotation)的裝配和自動裝配(其中最常用的是基於註解的裝配)。

基於XML的裝配

在這裏插入圖片描述
在這裏插入圖片描述

基於註解(Annotation)的裝配

<context: annotation-config />用來開啓註解處理器。
在這裏插入圖片描述

自動裝配

自動裝配,就是將一個Bean自動的注入到到其他Bean的Property中。 Spring的元素中包含一個autowire屬性,我們可以通過設置autowire的屬性值來自動裝配Bean。
在這裏插入圖片描述



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章