使用Field注入(用于注解方式):注入依賴(lài)對(duì)象可以采用手工裝配或者手工自動(dòng)裝配。在實(shí)際應(yīng)用中建議使用手工裝配,因?yàn)樽詣?dòng)裝配會(huì)產(chǎn)生未知情況,開(kāi)發(fā)人員無(wú)法預(yù)見(jiàn)最終的裝配結(jié)果。
依賴(lài)注入—手工裝配
手工裝配依賴(lài)對(duì)象,在這種方式中又有兩種編程方式。
1.在xml配置文件中,通過(guò)bean節(jié)點(diǎn)配置,如:
1 <bean id="orderService" class="cn.itcast.service.OrderServiceBean">2 //構(gòu)造器注入3 <constructor-arg index="0" type="java.lang.String" value="xxx"/>4 //屬setter方法注入5 <PRoperty name="name" value="zhao"/>6 </bean>
2.在java代碼中使用@Autowired或者@Resource注解方式進(jìn)行裝配。但我們需要在xml配置文件中配置一下信息
1 <beans Xmlns="http://www.springframework.org/schema/beans"2 Xmlns="http://www.w3.org/2001/XMLSchema-instance"3 Xmlns:context="http://www.springframework.org/schema/context"4 Xsi:schemaLocation="http://www.springframework.org/schema/beans5 http://www.springframework.org/schema/context6 http://www.springframework.org/schema/context/spring-context-2.5xsd">7 </beans>
這個(gè)配置隱式注冊(cè)了多個(gè)對(duì)注釋進(jìn)行解析處理的處理器:AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanProcessor,RequiredAnnotationBeanPostProcessor
3.區(qū)別
在java代碼中使用@Autowired或@Resource注解方式進(jìn)行裝配。這兩個(gè)注解的區(qū)別是@Autowired默認(rèn)按類(lèi)型裝配@Resource默認(rèn)按名稱(chēng)進(jìn)行裝配,當(dāng)找不到與名稱(chēng)匹配的bean才會(huì)按類(lèi)型裝配
1 @Autowired2 private PersonDao personDao;//用于字段上3 @Autowired4 public void setOrderDao(OrderDao orderDao){5 this.orderDao = orderDao; //用于屬性的setter方法上 6 }@Autowired注解是按類(lèi)型裝配依賴(lài)對(duì)象,默認(rèn)情況下它要求依賴(lài)對(duì)象必須存在,如果允許null值,可以設(shè)置它required屬性為false;如果我們想使用名稱(chēng)裝配,可以結(jié)合@Qualfier注解一起使用,如下:
@Autowired@Qualifier("personDao")private PersonDao personDao;@Resource注解和@Autowired一樣,可以標(biāo)注在字段或者屬性的setter方法上,但它默認(rèn)按名稱(chēng)裝配。名稱(chēng)可以通過(guò)@Resource的name屬性指定;如果沒(méi)有指定name屬性,當(dāng)注解標(biāo)注在字段上,即默認(rèn)字段的名稱(chēng)作為bean名稱(chēng)尋找依賴(lài)對(duì)象;當(dāng)注解標(biāo)注在屬性setter方法上,即默認(rèn)取屬性名作為bean名稱(chēng)尋找依賴(lài)對(duì)象
@Resource(name="personDaoBean")private PersonDao personDao;
注:如果沒(méi)有指定name屬性,并且按照默認(rèn)的名稱(chēng)仍找不到對(duì)象時(shí),@Resource注解會(huì)回退到按類(lèi)型裝配。但一旦指定了name屬性,就只能按名稱(chēng)裝配了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注