1. 程式人生 > >spring中DI配置的三種方式

spring中DI配置的三種方式

20187月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: ... = “...” />