1. 程式人生 > >Bean配置、屬性配置、自動裝配

Bean配置、屬性配置、自動裝配

一、配置Bean概述

1、配置形式:

①基於xml檔案

②基於註解

2、配置方式:

①通過全類名(反射)

②通過工廠方法(靜態工廠方法、例項工廠方法)

③FactoryBean

3、依賴注入方式:

①屬性注入

②構造器注入

二、Spring配置Bean

1、基於xml、通過全類名(反射)、屬性注入配置Bean

2、基於xml、通過全類名(反射)、構造器注入

3、基於xml、通過工廠方法配置

① 通過靜態工廠方法配置Bean:

即不需要建立工廠例項就可以建立Bean的例項。

② 通過例項工廠方法配置Bean:
建立工廠例項,通過呼叫工廠例項的方法建立Bean例項。

4、基於xml,通過FactoryBean配置Bean

5、基於註解配置Bean

①   註解依賴aop包,所以需要匯入aop包。

②   Spring 能夠從 classpath 下自動掃描(需要配置 context:component-scan )具有特定註解的元件。

    特定的元件包括:

    @Component:基本註解,標識一個受Spring管理的元件。

    @Repository:標識持久層元件。

    @Service:標識業務層元件。

    @Controller:標識控制層元件。

 Spring 對掃描到的元件有預設的命名規則

:使用非限定類名,第一個字母小寫 (也可以使用value屬性指定元件的名稱)。

③ 配置<context:component-scan>,其中 base-package 屬性指定Spring掃描的包,Spring將掃描該包及其所有子包,如有多個包,使用逗號隔開

④ 可以使用 resource-pattern 來過濾特定的類。

⑤ 使用 <context:exclude-filter> 子節點指定排除哪些類。

⑥ 使用 <context:include-filter> 子節點指定只包含哪些類。

⑦ 使用 @Autowired

註解自動裝配Bean。

三、Spring配置Bean的屬性

1、Spring Bean配置中的字面值

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

② 基本資料型別及其封裝類、String等型別都可以採用字面值注入方式。

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

2、Bean之間的引用

3、Bean配置集合屬性

① 配置List型別屬性: Set類似

② 配置Map型別屬性:

③ 配置java.util.Properties屬性:

④配置獨立的集合Bean:

⑤ 使用p名稱空間:Spring 從 2.5 版本開始引入了一個新的 p 名稱空間

四、自動裝配

1、使用 @Autowired 註解自動裝配Bean,使用@Autowired註解自動裝配具有型別相容的單個Bean屬性。

可以在構造器、普通欄位一切具有引數的方法上使用 @Autowired 註解。

2、預設情況下,當使用 @Autowired 註解的屬性,如果在IOC容器中找不到匹配的Bean來裝配屬性時,會丟擲異常。

可以使用 required=false 設定某一屬性不被設定(即IOC容器不配置匹配的Bean)。

3、使用@Autowired註解的屬性,當 IOC 容器中存在多個型別匹配的 Bean 時,預設情況下會匹配與屬性

相同名稱的 Bean,若匹配不到則丟擲異常。也可以使用 @Qualifier(“Bean名稱”) 註解指定注入的Bean。

4、@Autowired也可以用在陣列上,Spring會將所有匹配的Bean自動裝配進陣列。

     @Autowired也可以用在集合上,Spring會判斷該集合的型別,然後自動裝配所有型別相容的Bean。

     @Autowired也可以用在Map上,若key為String型別,Spring將Bean的名稱作為key,Bean本身作為值自動裝配所有型別相容的的Bean。

5、也可以使用 @Resource@Inject 自動裝配Bean,功能與 @Autowired 類似,建議使用@Autowired註解