Spring自動裝配Beans

AngeliaZheng發表於2018-09-13

Spring框架,可以用 auto-wiring 功能會自動裝配Bean。要啟用它,只需要在 <bean>定義“autowire”屬性。

<bean id="customer" class="com.yiibai.common.Customer" autowire="byName" />

Spring中的4種自動裝配模式:

  • no – 預設情況下,自動配置是通過“ref”屬性手動設定
  • byName – 根據屬性名稱自動裝配。如果一個bean的名稱和其他bean屬性的名稱是一樣的,將會自裝配它。
  • byType – 按資料型別自動裝配。如果一個bean的資料型別是用其它bean屬性的資料型別,相容並自動裝配它。
  • constructor – 在建構函式引數的byType方式。

1. Auto-Wiring ‘no’
這是預設的模式,通過 'ref' 屬性來連線 bean。

<bean id="articleDao" class="com.angelia.spring.dao.ArticleDaoImpl">
	<property name="dataSource" ref="dataSource" />
</bean>

2. Auto-Wiring ‘byName’

按屬性名稱自動裝配。由於對“articleDao” bean的名稱是相同於“articleService” bean 的屬性(“articleDao”)名稱,所以,Spring會自動通過setter方法將其裝配 – “setArticleDao(ArticleDao articleDao)“.

<bean id="articleDao" class="com.angelia.spring.dao.ArticleDaoImpl">
	<property name="dataSource" ref="dataSource" />
</bean>
	
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl" autowire="byName" />

3. Auto-Wiring ‘byType’

按屬性的資料型別自動裝配。由於“articleDao” bean中的資料型別是與“articleService” bean的屬性(ArticleDao物件)的資料型別一樣的,所以,Spring會自動通過setter方法將其自動裝配。– “setArticleDao(ArticleDao articleDao)“.

<bean id="articleDao" class="com.angelia.spring.dao.ArticleDaoImpl">
	<property name="dataSource" ref="dataSource" />
</bean>
	
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl" autowire="byType" />

4. Auto-Wiring ‘constructor’

通過建構函式引數的資料型別按屬性自動裝配Bean。由於 “articleDao” bean的資料型別與 “articleService” bean 的屬性(ArticleDao物件)的建構函式引數的資料型別是一樣的,所以,Spring通過構造方法自動裝配 – “public ArticleServiceImpl(ArticleDao articleDao)“.

<bean id="articleDao" class="com.angelia.spring.dao.ArticleDaoImpl">
	<property name="dataSource" ref="dataSource" />
</bean>
	
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl" autowire="constructor" />

相關文章