一、自動裝配 bean
配置文件自動裝配的四種方式:
1. byName
2. byType
當 Spring 檢查到有多個 bean 符合指定類型時,設置 primary = "false" 表示該 bean 不是候選 bean,但是默認是 true
還可以設置 autowire-candidate = “false”,以在自動裝配時忽略該 bean 作爲候選 bean
3. constructor
constructor 與 byType 具有相同的侷限性
4. autodetect
先通過構造器裝配,如果沒有匹配的 bean 則再通過 byType 匹配
5. 定義默認自動裝配
默認的優先級低於 bean 本身設置的優先級
注:同一個 bean 配置中不能同時使用 constructor 裝配和 <constructor-arg>元素
二、使用註解裝配
1. 啓用註解
2. @Autowired
@Autowired 註解不僅可以寫在 setter 方法上,屬性上,還可以寫在需要自動裝配 bean 的任意方法上,也包括構造方法。
@Autowired(required = "false") 可以設置 required 屬性,指定自動裝配是否可選。
@Qualifier("beanName") 指定自動裝配時選擇的 bean,當有多個 bean 滿足自動裝配時
自定義 Qulifier 註解
3. @Inject
@Named 相當於 Spring 的 @Qulifier
4. 在註解中使用表達式
@Value 用來設置 String 類型和基本數據類型的值,可以結合 SpEL 使用
三、自動檢測需要註冊到 Spring 上下文中的 bean
1. 爲自動檢測標註 bean
2. 過濾掃描
四、使用 Spring 基於 Java 的配置
使用 @Configuration 註解 Java 類相當於 XML 文件的 <beans> 元素, @Bean 相當於 XML <bean> 元素
@Configuration
public class Beans {
@Bean
public MyBean myBeanId(){
MyBean mb = new MyBean();
// 方法體內可以實現想要的邏輯,比如引用其它 bean
mb.setMyBean2(myBeanId2);
return mb;
}
@Bean
public MyBean2 myBeanId2(){
return new MyBean();
}
}