日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Android中如何利用Spring實(shí)現(xiàn)依賴(lài)注入-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“Android中如何利用Spring實(shí)現(xiàn)依賴(lài)注入”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)成立于2013年,我們提供高端網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、全網(wǎng)營(yíng)銷(xiāo)推廣微信小程序開(kāi)發(fā)、微信公眾號(hào)開(kāi)發(fā)、營(yíng)銷(xiāo)推廣服務(wù),提供專(zhuān)業(yè)營(yíng)銷(xiāo)思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開(kāi)發(fā)來(lái)完成項(xiàng)目落地,為發(fā)電機(jī)租賃企業(yè)提供源源不斷的流量和訂單咨詢(xún)。

1.手工裝配依賴(lài)對(duì)象


手工裝配依賴(lài)對(duì)象,在這種方式中又有兩種編程方式

在xml配置文件中,通過(guò)在bean節(jié)點(diǎn)下配置

在java代碼中使用@Autowired或@Resource注解方式進(jìn)行裝配

依賴(lài)注入--手工裝配--XML方式

通過(guò)setter方法注入依賴(lài)

元素的< property >子元素指明了使用它們的set方法來(lái)注入。可以注入任何東西,從基本類(lèi)型到集合類(lèi),甚至是應(yīng)用系統(tǒng)的bean。

通過(guò)setter方法注入依賴(lài)

簡(jiǎn)單bean配置

配置bean的簡(jiǎn)單屬性,基本數(shù)據(jù)類(lèi)型和String。

                            

通過(guò)setter方法注入依賴(lài)

引用其它bean

    

內(nèi)部bean

     

這種方式的缺點(diǎn)是你無(wú)法在其它地方重用這個(gè)personClass實(shí)例,原因是它是專(zhuān)門(mén)為personService而用。

裝配集合

若bean的屬性是集合類(lèi)型,按如下處理:

A、裝配List和數(shù)組:

         list1     list2                   obj1     obj2         

B、 裝配set:

          set1     set2         

set使用方法和list一樣,不同的是對(duì)象被裝配到set中,而list是裝配到List或數(shù)組中裝配。

裝配集合

C、裝配map:

    map01   map02   

map中的的數(shù)值和以及的一樣,可以使任何有效的屬性元素,需要注意的是key值必須是String的。

D、裝配Properties:

   prop1 prop2  

E、設(shè)置null:

   

通過(guò)參數(shù)的順序:

 張三   56 

通過(guò)構(gòu)造函數(shù)注入依賴(lài)

     56      張三 

依賴(lài)注入--手工裝配—注解方式

在java代碼中使用@Autowired或@Resource注解方式進(jìn)行裝配的前提條件是。

1、引入context命名空間 需要在xml配置文件中配置以下信息:

  

2、在配置文件中添加context:annotation-config標(biāo)簽

這個(gè)配置隱式注冊(cè)了多個(gè)對(duì)注釋進(jìn)行解析處理的處理器

AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,   PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor

注: @Resource注解在spring安裝目錄的lib\j2ee\common-annotations.jar

在java代碼中使用@Autowired或@Resource注解方式進(jìn)行裝配,這兩個(gè)注解的區(qū)別是:@Autowired 默認(rèn)按類(lèi)型裝配,@Resource默認(rèn)按名稱(chēng)裝配,當(dāng)找不到與名稱(chēng)匹配的bean才會(huì)按類(lèi)型裝配。

@Autowired

privatePersonDao  personDao;//用于字段上

@Autowired

publicvoid setPersonDao(PersonDaopersonDao) { //用于屬性的set方法上         this.personDao = personDao;  }

@Autowired注解是按類(lèi)型裝配依賴(lài)對(duì)象,默認(rèn)情況下它要求依賴(lài)對(duì)象必須存在,如果允許null值,可以設(shè)置它required屬性為false。

@Autowired(required=false)     privatePersonDao  personDao;//用于字段上  @Autowired(request=false)     public voidsetPersonDao(PersonDaopersonDao) {  //用于屬性的set方法上         this.personDao = personDao;  }

如果我們想使用按名稱(chēng)裝配,可以結(jié)合@Qualifier注解一起使用。如下:

@Autowired@Qualifier("personDao")     privatePersonDao  personDao;//用于字段上  @Autowired  publicvoidsetPersonDao(@Qualifier("personDao") PersonDao personDao) {//用于屬性的set方法上        this.personDao= personDao;  }

@Qualifier注解也能夠被指定為構(gòu)造器的參數(shù)或者方法的參數(shù):

@Resource注解和@Autowired一樣,也可以標(biāo)注在字段或?qū)傩缘膕etter方法上.

@Resource注解默認(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="personDao")      privatePersonDaopersonDao;//用于字段上  @Resource(name="personDao")  publicvoidsetPersonDao(PersonDao personDao) {//用于屬性的set方法上      this.personDao = personDao;  }

后一種相當(dāng)于xml配置文件中的

注意:如果沒(méi)有指定name屬性,并且按照默認(rèn)的名稱(chēng)找不到依賴(lài)對(duì)象時(shí), @Resource注解會(huì)回退到按類(lèi)型裝配。但一旦指定了name屬性,就只能按名稱(chēng)裝配了。

2.自動(dòng)裝配依賴(lài)對(duì)象

對(duì)于自動(dòng)裝配,大家了解一下就可以了,實(shí)在不推薦大家使用。例子:

autowire屬性取值如下

byType:按類(lèi)型裝配,可以根據(jù)屬性的類(lèi)型,在容器中尋找跟該類(lèi)型匹配的bean。如果發(fā)現(xiàn)多個(gè),那么將會(huì)拋出異常。如果沒(méi)有找到,即屬性值為null。

byName:按名稱(chēng)裝配,可以根據(jù)屬性的名稱(chēng),在容器中尋找跟該屬性名相同的bean,如果沒(méi)有找到,即屬性值為null。

constructor與byType的方式類(lèi)似,不同之處在于它應(yīng)用于構(gòu)造器參數(shù)。如果在容器中沒(méi)有找到與構(gòu)造器參數(shù)類(lèi)型一致的bean,那么將會(huì)拋出異常。

autodetect :首先嘗試使用constructor來(lái)自動(dòng)裝配,然后使用byType方式。不確定性的處理與constructor方式和byType方式一致。

通過(guò)在classpath自動(dòng)掃描方式把組件納入spring容器中管理

前面的例子我們都是使用XML的bean定義來(lái)配置組件。在一個(gè)稍大的項(xiàng)目中,通常會(huì)有上百個(gè)組件,如果這些組件采用xml的bean定義來(lái)配置,顯然會(huì)增加配置文件的體積,查找及維護(hù)起來(lái)也不太方便。

spring2.5為我們引入了組件自動(dòng)掃描機(jī)制,它可以在類(lèi)路徑底下尋找標(biāo)注了@Component、@Service、@Controller、@Repository注解的類(lèi),并把這些類(lèi)納入進(jìn)spring容器中管理。它的作用和在xml文件中使用bean節(jié)點(diǎn)配置組件是一樣的。

要使用自動(dòng)掃描機(jī)制,我們需要打開(kāi)以下配置信息:

1、引入context命名空間 需要在xml配置文件中配置以下信息:

  

2、在配置文件中添加context:component-scan標(biāo)簽

其中base-package為需要掃描的包(含子包)。

注:

1、在使用組件掃描元素時(shí),AutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessor會(huì)隱式地被包括進(jìn)來(lái)。 也就是說(shuō),連個(gè)組件都會(huì)被自動(dòng)檢測(cè)并織入 - 所有這一切都不需要在XML中提供任何bean配置元數(shù)據(jù)。

2、功能介紹

@Service用于標(biāo)注業(yè)務(wù)層組件、

@Controller用于標(biāo)注控制層組件(如struts中的action)、

@Repository用于標(biāo)注數(shù)據(jù)訪(fǎng)問(wèn)組件,即DAO組件。

而@Component泛指組件,當(dāng)組件不好歸類(lèi)的時(shí)候,我們可以使用這個(gè)注解進(jìn)行標(biāo)注。

//Dao層  importorg.springframework.stereotype.Repository;  importcom.test.dao.PersonDao;    @Repository("personDao")     publicclassPersonDaoBean implements PersonDao {  }
//業(yè)務(wù)層  importjavax.annotation.Resource;  importorg.springframework.stereotype.Service;  importcom.test.dao.PersonDao;  importcom.test.service.PersonService;   @Service("personService")     publicclassPersonServiceBean implements PersonService {   @Resource(name="personDao")     privatePersonDao personDao;  }

“Android中如何利用Spring實(shí)現(xiàn)依賴(lài)注入”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


網(wǎng)站標(biāo)題:Android中如何利用Spring實(shí)現(xiàn)依賴(lài)注入-創(chuàng)新互聯(lián)
本文URL:http://www.dlmjj.cn/article/dgjjcd.html