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 對掃描到的元件有預設的命名規則
③ 配置<context:component-scan>,其中 base-package 屬性指定Spring掃描的包,Spring將掃描該包及其所有子包,如有多個包,使用逗號隔開。
④ 可以使用 resource-pattern 來過濾特定的類。
⑤ 使用 <context:exclude-filter> 子節點指定排除哪些類。
⑥ 使用 <context:include-filter> 子節點指定只包含哪些類。
⑦ 使用 @Autowired
三、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註解。