新聞中心
Spring之自動(dòng)裝配,所謂自動(dòng)裝配,從字面解讀,我想應(yīng)該不難理解吧(當(dāng)然不是誘導(dǎo)讀者去咬文嚼字)。那究竟spring 自動(dòng)裝配有幾種裝配類型(我想大家最關(guān)注的應(yīng)該是我們什么時(shí)候可以“偷懶”反之什么時(shí)候又不能,我想開發(fā)者目的應(yīng)該也是為了簡(jiǎn)化程序員的工作)。那下面我們就介紹spring自動(dòng)裝配之不能偷懶——autowire="no",在接受之前我們先介紹自動(dòng)裝配總共包括幾種裝配方式(在其他裝配方式中就不在介紹了)。

十多年的雨花網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整雨花建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“雨花網(wǎng)站設(shè)計(jì)”,“雨花網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
在介紹之前,先簡(jiǎn)單的提一個(gè)問(wèn)題(自動(dòng)裝配總共有幾種呢),答案(六種)也許與大家想的有點(diǎn)背離,但是我個(gè)人認(rèn)為并不是不無(wú)道理的。
1. default-autowire="那五種形式": 這種是在全局(即在跟標(biāo)簽里)定義的,如果局部定義了autowire 可想而知,當(dāng)然是按照局部的去進(jìn)行自動(dòng)裝配了,如果沒有定義就是按照跟標(biāo)簽的默認(rèn)定義去進(jìn)行裝配,所以在這里把它單獨(dú)拿出來(lái)作為一種
2. No:通過(guò)ref元素指定依賴
3. byName:在容器中尋找和需要自動(dòng)裝配的屬性名相同的Bean(或ID),如果沒有找到相符的Bean,該屬性就沒有被裝配上。
4. byType:在容器中尋找一個(gè)與需要自動(dòng)裝配的屬性類型相同的Bean;如果沒有找到相符的Bean,該屬性就沒有被裝配上,如果找到超過(guò)一個(gè)相符的Bean拋出異常org.springframework.beans.factory.UnsatisfiedDependencyException(特此聲明測(cè)試針對(duì)spring2.5.6,在spring3.0中檢查到多個(gè)Bean貌似沒有異常并且在3.0中沒有依賴檢查這個(gè)屬性)
5. Constructor:在容器中查找與需要自動(dòng)裝配的Bean的構(gòu)造方法參數(shù)一致的一個(gè)或者過(guò)個(gè)Bean,如果從在不確定的Bean或構(gòu)造方法,容器會(huì)拋出異常org.springframework.beans.factory.UnsatisfiedDependencyException.
6. Autodetect:首先我們嘗試使用constructor來(lái)自動(dòng)裝配,然后使用byType方式。不確定行的處理與constuctor和byType方式一樣
既然我們的題目叫不能偷懶,那當(dāng)然我們就要介紹no了
Java代碼
- //Longmanfei.xml
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- class="cn.csdn.service.GreetingServiceImpl" autowire="no">
- //GreetingDaoImpl
- public class GreetingDaoImpl implements GreetingDao {
- private String say;
- public void say() {
- System.out.println("我打了這個(gè)招呼"+say);
- }
- public void setSay(String say) {
- this.say = say;
- }
- }
- //GreetingServiceImpl
- public class GreetingServiceImpl implements GreetingService{
- private GreetingDaoImpl greetingDaoImpl;
- public void say() {
- greetingDaoImpl.say();
- }
- public void setGreetingDaoImpl(GreetingDaoImpl gdi) {
- System.out.println("我調(diào)用了set方法");
- this.greetingDaoImpl = gdi;
- }
- public GreetingServiceImpl() {
- super();
- System.out.println("我調(diào)用了空的構(gòu)造器");
- }
- public GreetingServiceImpl(GreetingDaoImpl greetingDaoImpl) {
- super();
- System.out.println("我調(diào)用了有參的構(gòu)造器");
- this.greetingDaoImpl = greetingDaoImpl;
- }
- }
- //junit測(cè)試
- @Test
- public void test1(){
- /*加載spring容器可以解析多個(gè)配置文件采用數(shù)組方式傳遞*/
- ApplicationContext
- ac=new ClassPathXmlApplicationContext("classpath:Longmanfei.xml");
- //直接轉(zhuǎn)換成接口便于日后修改數(shù)據(jù)/*Ioc控制反轉(zhuǎn)體現(xiàn)*/
- GreetingService
- gs=(GreetingService) ac.getBean("greetingServiceImpl");
- gs.say();
- }
【編輯推薦】
- Java EE進(jìn)階之Spring事務(wù)深入淺出
- Spring事務(wù)管理高級(jí)應(yīng)用難點(diǎn)剖析
- Spring的Hibernate事務(wù)管理機(jī)制
- 簡(jiǎn)單介紹Spring事務(wù)管理
文章名稱:Spring自動(dòng)裝配之不能偷懶
新聞來(lái)源:http://m.5511xx.com/article/dpjiecg.html


咨詢
建站咨詢
