91麻豆视频-成人三级电影-被无耻变态上司侵犯-精品一区二区三区四区五区-黄色小视频免费观看-男人干女人视频-日本中文字幕在线观看视频-免费看黄色片子-日本三级中国三级99人妇网站-草1024榴社区成人-扒开双腿让70岁老头看-欧美人伦-国产清纯白嫩初高中在线观看性色-中文久久精品-久久国产剧情-91免费污-欧美日韩在线播放三区四区-日本网站黄色-亚洲最大成人综合网-欧美成人高清在线-天天噜日日噜-亚洲五月天综合-香港男男中粗大巨gaysex-床戏高潮呻吟声片段-97视频一区二区三区-精品免费囯产一区二区三区-久久开心网-free啪啪-黄色成人免费看-91精品一二区

網(wǎng)站開發(fā) APP開發(fā) 小程序開發(fā) SEO優(yōu)化 公司新聞

autowiring(自動(dòng)依賴裝配)的實(shí)現(xiàn)

2018-06-06 12:10:41
1460

  在前面對(duì)IoC容器實(shí)現(xiàn)原理的分析中直是通過 Bean Definition的屬性值和構(gòu)造函數(shù)以顯式的方式對(duì)Bean的依賴關(guān)系進(jìn)行管理的。在 Spring中,相對(duì)這種顯式的依賴管理方式IoC容器還提供了自動(dòng)依賴裝配的方式,為應(yīng)用使用容器提供更大的方便。在自動(dòng)裝配中,不需要對(duì)Bean屬性做顯式的依賴關(guān)系聲明,只需要配置好 autowiring屬性,IoC容器會(huì)根據(jù)這個(gè)屬性的配置,使用反射自動(dòng)查找屬性的類型或者名字,然后基于屬性的類型或名字來自動(dòng)匹配oC容器中的Bean,從而自動(dòng)地完成依賴注入。

  這是一個(gè)很有誘惑力的功能特性,使用它可以完成依賴關(guān)系管理的自動(dòng)化,但是使用時(shí)定要注意,計(jì)算機(jī)只是在自動(dòng)執(zhí)行,它是不會(huì)思考的。使用這個(gè)特性的優(yōu)點(diǎn)是能夠減少用戶配置Bean的工作量,但它是一把雙刃劍,如果使用不當(dāng),也會(huì)為應(yīng)用帶來不可預(yù)見的后果調(diào)方所以,使用時(shí)需要多一些小心和謹(jǐn)慎。

  從 autowiring使用上可以知道,這個(gè) autowiring屬性在對(duì)Bean屬性進(jìn)行依賴注入時(shí)起作用ax:對(duì)Bean屬性依賴注入的實(shí)現(xiàn)原理,在前面已經(jīng)做過分析。回顧那部分內(nèi)容,不難發(fā)現(xiàn),對(duì)autowirng屬性進(jìn)行處理,從而完成對(duì)Bean屬性的自動(dòng)依賴裝配,是在 populate Bean中實(shí)現(xiàn)的節(jié)選 AbstractAutowire Capable Bean Factory的 populate Bean方法中與autowiring實(shí)現(xiàn)相關(guān)的部行體次分,可以清楚地看到這個(gè)特性在容器中實(shí)現(xiàn)的入口。也就是說,對(duì)屬性 autowiring的處理是populateBean處理過程的一個(gè)部分。在 populate Bean的實(shí)現(xiàn)中,在處理一般的Bean之前,先對(duì) autowiring屬性進(jìn)行處理。如果當(dāng)前的Bean配置了 autowire_by_name和 autowire_by_type屬性,那么調(diào)用相應(yīng)的 autowireByName方法和 autowire ByType方法。這兩個(gè)方法很巧妙地應(yīng)用1C容器的特性。例如,對(duì)于 autowire_ by_name,它首先通過反射機(jī)制從當(dāng)前Bean中得到需要注入的屬性名,然后使用這個(gè)屬性名向容器申請(qǐng)與之同名的Bean,這樣實(shí)際又觸發(fā)了另Bean的生成和依賴注入的過程。

?