白话spring依赖注入
Spring能有效地組織J2EE應(yīng)用各層的對象。Action?Service?DAO?,都可在Spring的管理下有機(jī)地協(xié)調(diào)、運(yùn)行。
Spring將各層的對象以松耦合的方式組織在一起,對象與對象之間沒有直接的聯(lián)系,各層對象的調(diào)用完全面向接口。當(dāng)系統(tǒng)需要重構(gòu)時(shí),代碼的改寫量將大大減少。?
Spring的核心機(jī)制“依賴注入”讓bean與bean之間以配置文件組織在一起,而不是以硬編碼的方式耦合在一起。
依賴注入,是指程序運(yùn)行過程中,如果需要調(diào)用另一個對象協(xié)助時(shí),無須在代碼中創(chuàng)建被調(diào)用者,而是依賴于外部的注入。Spring的依賴注入對調(diào)用者和被調(diào)用者幾乎沒有任何要求,完全支持對POJO之間依賴關(guān)系的管理
人與斧頭的故事:
(1)原始社會里,幾乎沒有社會分工。需要斧子的人(調(diào)用者)只能自己去磨一把斧子(被調(diào)用者)。對應(yīng)的情形為:Java程序里的調(diào)用者自己創(chuàng)建被調(diào)用者。 (Java實(shí)例的調(diào)用者創(chuàng)建被調(diào)用的Java實(shí)例,必然要求被調(diào)用的Java類出現(xiàn)在調(diào)用者的代碼里。無法實(shí)現(xiàn)二者之間的松耦合。?
)
(2)進(jìn)入工業(yè)社會,工廠出現(xiàn)。斧子不再由普通人完成,而在工廠里被生產(chǎn)出來,此時(shí)需要斧子的人(調(diào)用者)找到工廠,購買斧子,無須關(guān)心斧子的制造過程。對應(yīng)Java程序的簡單工廠的設(shè)計(jì)模式。 (調(diào)用者無須關(guān)心被調(diào)用者具體實(shí)現(xiàn)過程,只需要找到符合某種標(biāo)準(zhǔn)(接口)的實(shí)例,即可使用。此時(shí)調(diào)用的代碼面向接口編程,可以讓調(diào)用者和被調(diào)用者解耦,這也是工廠模式大量使用的原因。但調(diào)用者需要自己定位工廠,調(diào)用者與特定工廠耦合在一起。?
)
(3)進(jìn)入“按需分配”社會,需要斧子的人不需要找到工廠,坐在家里發(fā)出一個簡單指令:需要斧子。斧子就自然出現(xiàn)在他面前。對應(yīng)Spring的依賴注入。 (調(diào)用者無須自己定位工廠,程序運(yùn)行到需要被調(diào)用者時(shí),系統(tǒng)自動提供被調(diào)用者實(shí)例。事實(shí)上,調(diào)用者和被調(diào)用者都處于Spring的管理下,二者之間的依賴關(guān)系由Spring提供。)
轉(zhuǎn)載于:https://www.cnblogs.com/xuan52rock/p/4616137.html
總結(jié)
以上是生活随笔為你收集整理的白话spring依赖注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android SQLite数据库之事务
- 下一篇: 【go】sdk + idea-plugi