search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Spring之容器與bean


一、概念理解

1、容器

IoC容器負責容納並管理bean,在Spring中,BeanFactoryIoC容器的核心介面。 它的職責包括:實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。

2bean

Spring中,那些組成你應用程序的主體(backbone)及由Spring IoC容器所管理的對象,被稱之為bean 簡單地講,bean就是由Spring容器初始化、裝配及管理的對象。

bean的定義由BeanDefinition 對象來表示,該定義將包含以下信息:

1)全限定類名:這通常就是已定義bean的實際實現類。

2bean行為的定義:這些定義將決定bean在容器中的行為(作用域、生命周期回調等等)。

3)對其他bean的引用:這些引用bean也可以稱之為協作beancollaborators 或依賴beandependencies)。

4)創建bean實例時的其他配置設置。比如使用bean來定義連接池,可以通過屬性或者構 造參數指定連接數,以及連接池大小限制等。

上述內容直接被翻譯為每個bean定義包含的一組properties

二、bean的配置

1、配置bean

1.1 通過全類名反射 配置bean

java bean: HelloWorld.java

View Code

配置文件:applicationContext.xml

View Code

bean的實例化:Main.java

View Code

1.2、通過工廠方法配置bean

1.3、通過factorybean

2bean的依賴注入

Spring 支持 3 種依賴注入的方式:屬性注入、構造器注入、工廠方法注入(很少使用,不推薦)

2.1 、屬性注入

屬性注入即通過 setter 方法注入Bean 的屬性值或依賴的對象。

屬性注入是實際應用中最常用的注入方式。

View Code

2.2 、構造器注入

構造器注入即 通過配置構造器參數,來注入Bean 的屬性值或依賴的對象,它保證了 Bean 實例在實例化后就可以使用。

Java bean Car.java

View Code

配置文件: applicationContext.xml

View Code

bean的實例化:

View Code

3、注入參數詳解

3.1 字面值

1)字面值:可用字元串表示的值,可以通過 <value> 元素標籤或 value 屬性進行注入。

2)基本數據類型及其封裝類、String 等類型都可以採取字面值注入的方式。

3 若字面值中包含特殊字元,可以使用 <![CDATA]> 把字面值包裹起來。

View Code

3.2、引用其他bean

組成應用程序的 Bean 經常需要相互協作以完成應用程序的功能。要使 Bean 能夠相互訪問, 就必須在 Bean 配置文件中指定對 Bean 的引用。

實體類:Car.java

View Code

Person.java

View Code

兩種方式:

1)使用property ref 屬性:在 Bean 的配置文件中, 可以通過 <ref> 元素或 ref 屬性為 Bean 的屬性或構造器參數指定對 Bean 的引用。

配置文件: applicationContext.xml

View Code

2)內部bean :在屬性或構造器里包含 Bean 的聲明, 這樣的 Bean 稱為內部 Bean

View Code

3.3 null值和級聯屬性

Null

View Code

級聯屬性

View Code

3.4、集合屬性

Spring中可以通過一組內置的 xml 標籤(例如: <list>, <set> <map>) 來配置集合屬性. 1)、List屬性配置: 配置 java.util.List 類型的屬性,需要指定 <list> 標籤,在標籤里包含一些元素。這些標籤可以通過 <value> 指定簡單的常量值。

通過 <ref> 指定對其他 Bean 的引用.

通過<bean> 指定內置 Bean 定義. 通過 <null/> 指定空元素, 甚至可以內嵌其他集合。

實體類:Car.java

View Code

Person.java

View Code

配置文件: applicationContext.xml

View Code

bean的實例化:Main.java

View Code

(2)、數組的定義和 List 一樣, 都使用 <list>

(3)、配置 java.util.Set 需要使用 <set> 標籤, 定義元素的方法與 List 一樣。

(4)Map屬性配置: Java.util.Map 通過 <map> 標籤定義, <map> 標籤里可以使用多個 <entry> 作為子標籤. 每個條目包含一個鍵和一個值。

必須在 <key> 標籤里定義鍵因為鍵和值的類型沒有限制, 所以可以自由地為它們指定 <value>, <ref>, <bean> <null> 元素。

可以將 Map 的鍵和值作為 <entry> 的屬性定義: 簡單常量使用 key value 來定義; Bean 引用通過 key-ref value-ref 屬性定義;

使用 <props> 定義: Map的子類 java.util.Properties, 該標籤使用多個 <prop> 作為子標籤. 每個 <prop> 標籤必須定義 key 屬性。

實體類:Car.java

View Code

Person.java

View Code

DataSource.java

View Code

配置文件: applicationContext.xml

View Code

bean的實例化:Main.java

View Code

每天記錄一點,每天進步一點。

關注微信858568103,可以領到學習資料,希望能真正的幫到你,讓學習更加輕鬆!



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦