spring依賴注入三種方式

在Spring容器中爲一個bean配置依賴注入有三種方式:
1、使用屬性的setter方法注入,最常用的方式;
2、使用構造器注入;
3、使用Field注入(用於註解方式)

1)、使用屬性setter方法注入
首先要配置被注入的bean,在該bean對應的類中,應該要有注入的對象屬性或者基本數據屬性。例如:爲JobServiceImpl類注入JobMapper,同時爲JobServiceImpl注入基本數據類型String,那麼這時,就要爲JobMapper對象和String類型設置setter方法,用於進行依賴注入。
如何配置該bean呢?
<bean id="jobService" class="com.zrj.service.impl.JobServiceImpl">
<property name="jobMapper">
<ref>jobMapper</ref>
</property>
</bean>
以上就是一個使用屬性的setter方法進行依賴注入。
2)、使用構造器注入
一、在PersonBiz類中注入PersonDao和String類型的數據;在該類中,不用爲PersonDao屬性和String數據類型的屬性設置setter()方法,但是需要生成該類的構造方法。
二、在配置文件中配置該類的bean,並配置構造器,在配置構造器中用到了<constructor-arg>節點,該節點有四個屬性:
idnex是索引,指定注入的屬性,從0開始,如:0代表personDao,1代表str屬性;
type是指該屬性所對應的類型,如PersonDao對應的是com.zrj.dao.PersonDao;
ref是指引用的是依賴對象;
value當注入的不是依賴對象。
如下:
--被依賴的類在配置文件中聲明
<bean id="personDao" class="com.aptech.dao.impl.PersonDAOImpl"></bean>
--依賴其他類的類在配置文件的聲明
<bean id="personBiz" class="com.aptech.biz.impl.PersonBizImpl">

<constructorarg index="0" type="com.aptech.dao.PersonDAO"ref="personDao"/>

<constructor-arg index="1" value="Spring學習"/>

</bean>
3)、使用字段(Filed)注入(採用註解方式)
在Spring中,注入依賴對象可以採用手工裝配和自動裝配,在實際應用開發中建議使用手工裝配,因爲自動裝配會產生許多很多未知的情況,開發人員無法預見最終的裝配結果。
手工裝配依賴對象有分爲兩種方式:
a、一種是在xml文件中,通過在bean節點下配置;如上面講到的使用屬性的setter方法依賴注入對象和使用構造器方法注入依賴對象都是這種方式。
b、另一種就是java代碼中使用的註解的方式進行裝配,在代碼中加入@Resource或者@Autowired。
怎麼樣使用註解的方式來爲某個bean注入依賴對象?
一、在applicationContext.xml配置文件中,加入必要的頭文件:
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd
此爲引入了註解的命名空間,否則報錯。以上配置隱式的註冊了多個對註解進行解析的
處理AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor等。
二、在配置文件中加入<context:annotation-config>節點,告訴Spring容器可以採用註解的方式注入對象,
<context:annotation-config></context:annotation-config>
三、在配置文件中配置bean對象
四、在需要依賴注入的相應的依賴類,聲明一個依賴對象,不用生成該依賴對象的setter方法,並且爲該對象添加註解。
在java代碼中可以使用@Autowired或者@Resource註解方式進行Spring的依賴注入。
兩者的區別:@Autowired默認按類型裝配,@Resource默認按名稱裝配,當找不到名稱匹配的bean時,纔會按類型裝配。
通常我們採用@Resource.
使用註解注入依賴對象不用再在代碼上寫依賴對象的setter方法或者該類的構造方法,並且不用再在配置文件中配置大量的依賴對象,使代碼更加簡潔、清晰、易於維護。

依賴注入----自動裝配
Spring中提供了自動裝配依賴對象機制,但是實際開發中並不推薦使用自動裝配。
自動裝配的配置文件如下:
<bean id="***" class="***" autowire="byType">
只需要配置一個autowire屬性即可完成自動裝配,不用再配置文件中寫<property>,但是在類中還是會生成依賴對象的setter方法。
Autowire屬性值如下:
1、byType按類型裝配
2、byName按名稱裝配
3、construnctor與byType方式相似,不同之處在於與它的應用於構造參數,如果容器中沒有找到與構造參數類型一直的bean,那麼將拋出異常。
4、autodetect通過bean類的自省機制來決定是使用construnctor還是byType的方式進行自動裝配。如果發現默認的構造器,那麼將使用byType的方式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章