spring中DI配置的三種方式
2018年7月3日星期二
隨筆 筆記 --- spring的依賴注入
Spring裝配bean有三種方式:
1. 自動化配置(最推薦,避免顯示配置帶來的維護成本)
1.1 元件掃描:spring自動發現容器所建立的bean。開啟元件掃描,預設情況下自動掃描配置類相同包(以及子包)下所有帶有@component註解的類,併為其自動建立一個bean。
那麼,如何開啟元件掃描呢?
答:有兩種方式,基於java配置(推薦)和xml配置
Java配置:在配置類上新增@componentScan註解
Xml配置:利用<context:component-scan base-package=”...”/>
1.2 自動裝配:
spring自動滿足bean之間的依賴。使用@Autowired(推薦)或@Inject註解新增在構造、setter還是其他方法上,實現bean的自動注入,無需手動去new。
2. Java配置(推薦,基於java語言,型別安全易於重構)
利用@Bean註解來宣告(建立)一個bean,同時還可以注入另外依賴的bean(利用構造器和setter方法)
3. Xml配置
3.1利用<bean>標籤宣告一個bean。
舉例 <bean id = “peoson” class=”soundsystem.Person” />
3.2 如何注入bean(構造器和setter方法)
構造器注入bean,舉例
<bean id = “cdPlayer” class= “com.CDPlayer” >
<constructor-arg ref=”cd” />
</bean>
構造器注入字面量,舉例
<bean id = “...” class= “...”>
<constructor-arg value=”...” />
</bean>
c名稱空間注入bean,舉例
<bean id = “...” class= “...”c:cd-ref=”...” />
c名稱空間注入字面量,舉例
<bean id = “...” class= “...” c:_...=”...” />
利用<list>、<set>等標籤,構造器注入方式可以用來裝配集合,而c名稱空間不行。
Setter方法注入bean,舉例
<bean id = “cdPlayer” class= “com.CDPlayer” >
<property name = “...” ref = “...” />
</bean> 或者使用p名稱空間
<bean id = “cdPlayer” class= “com.CDPlayer” p: cd-ref = “...” />
Setter方法注入字面量,舉例
<bean id = “cdPlayer” class= “com.CDPlayer” >
<property name = “...” value = “...” />
</bean> 或者使用p名稱空間
<bean id = “cdPlayer” class= “com.CDPlayer” p: ... = “...” />