課程
/后端開發(fā)
/Java
/Spring入門篇
構(gòu)造器注入與setter注入分開使用
2022-01-26
源自:Spring入門篇 2-2
正在回答
設(shè)值注入有如下優(yōu)點:
設(shè)值注入需要該Bean包含這些屬性的setter方法
與傳統(tǒng)的JavaBean的寫法更相似,程序開發(fā)人員更容易理解、接收。通過setter方法設(shè)定依賴關(guān)系顯得更加只管。
對于復雜的依賴關(guān)系,如果采用構(gòu)造注入,會導致構(gòu)造器國語臃腫,難以閱讀。Spring在創(chuàng)建Bean實例時,需要同時實例化器依賴的全部實例,因而導致性能下降。而使用設(shè)值注入,則能避免這些問題
尤其是在某些屬性可選的情況況下,多參數(shù)的構(gòu)造器顯得更加笨重
構(gòu)造注入也不是絕對不如設(shè)值注入,在某些特定的場景下,構(gòu)造注入比設(shè)值注入更加優(yōu)秀。
構(gòu)造注入有以下優(yōu)勢:
構(gòu)造注入需要該Bean包含帶有這些屬性的構(gòu)造器
構(gòu)造注入可以在構(gòu)造器中決定依賴關(guān)系的注入順序,優(yōu)先依賴的優(yōu)先注入。例如,組件中其他依賴關(guān)系的注入,常常要依賴于DataSrouce的注入。采用構(gòu)造注入,可以在代碼中清晰的決定注入順序。
對于依賴關(guān)系無需變化的Bean,構(gòu)造注入更有用處。因為沒有Setter方法,所有的依賴關(guān)系全部在構(gòu)造器內(nèi)設(shè)定。因此,無需擔心后續(xù)的代碼對依賴關(guān)系產(chǎn)生破壞。
依賴關(guān)系只能在構(gòu)造器中設(shè)定,則只有組件的創(chuàng)建者才能改變組件的依賴關(guān)系。對組件的調(diào)用者而言,組件內(nèi)部的依賴關(guān)系完全透明,更符合高內(nèi)聚的原則。
建議:采用以設(shè)值注入為主,構(gòu)造注入為輔的注入策略。對于依賴關(guān)系無需變化的注入,盡量采用構(gòu)造注入;而其他的依賴關(guān)系的注入,則考慮采用設(shè)值注入。
舉報
為您帶來IOC和AOP的基本概念及用法,為后續(xù)高級課程學習打下基礎(chǔ)
3 回答關(guān)于設(shè)置注入與構(gòu)造注入
2 回答構(gòu)造器注入問題
3 回答構(gòu)造器注入錯誤
2 回答構(gòu)造器注入異常 IDEA 名字我已經(jīng)改成了 //構(gòu)造器注入 public InjectionServiceImpl(InjectionDAO injectionDAO) { this.injectionDAO = injectionDAO; }
1 回答構(gòu)造注入時有多個構(gòu)造器 怎樣才能找到是那個構(gòu)造器呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2022-02-27
設(shè)值注入有如下優(yōu)點:
設(shè)值注入需要該Bean包含這些屬性的setter方法
與傳統(tǒng)的JavaBean的寫法更相似,程序開發(fā)人員更容易理解、接收。通過setter方法設(shè)定依賴關(guān)系顯得更加只管。
對于復雜的依賴關(guān)系,如果采用構(gòu)造注入,會導致構(gòu)造器國語臃腫,難以閱讀。Spring在創(chuàng)建Bean實例時,需要同時實例化器依賴的全部實例,因而導致性能下降。而使用設(shè)值注入,則能避免這些問題
尤其是在某些屬性可選的情況況下,多參數(shù)的構(gòu)造器顯得更加笨重
構(gòu)造注入也不是絕對不如設(shè)值注入,在某些特定的場景下,構(gòu)造注入比設(shè)值注入更加優(yōu)秀。
構(gòu)造注入有以下優(yōu)勢:
構(gòu)造注入需要該Bean包含帶有這些屬性的構(gòu)造器
構(gòu)造注入可以在構(gòu)造器中決定依賴關(guān)系的注入順序,優(yōu)先依賴的優(yōu)先注入。例如,組件中其他依賴關(guān)系的注入,常常要依賴于DataSrouce的注入。采用構(gòu)造注入,可以在代碼中清晰的決定注入順序。
對于依賴關(guān)系無需變化的Bean,構(gòu)造注入更有用處。因為沒有Setter方法,所有的依賴關(guān)系全部在構(gòu)造器內(nèi)設(shè)定。因此,無需擔心后續(xù)的代碼對依賴關(guān)系產(chǎn)生破壞。
依賴關(guān)系只能在構(gòu)造器中設(shè)定,則只有組件的創(chuàng)建者才能改變組件的依賴關(guān)系。對組件的調(diào)用者而言,組件內(nèi)部的依賴關(guān)系完全透明,更符合高內(nèi)聚的原則。
建議:采用以設(shè)值注入為主,構(gòu)造注入為輔的注入策略。對于依賴關(guān)系無需變化的注入,盡量采用構(gòu)造注入;而其他的依賴關(guān)系的注入,則考慮采用設(shè)值注入。