Spring依賴注入的兩種方式比對
下面對spring依賴注入的兩種方式進(jìn)行一些介紹和比對。Spring依賴注入的兩種方式是:
1.設(shè)置注入;
2.構(gòu)造注入;
spring依賴注入之設(shè)置注入的優(yōu)點:
與傳統(tǒng)的JavaBean的寫法更相似,程序員更容易理解、接受,通過setter方式設(shè)定依賴關(guān)系顯得更加直觀、明顯;
對于復(fù)雜的依賴關(guān)系,如果采用構(gòu)造注入,會導(dǎo)致構(gòu)造器過于臃腫,難以閱讀。Spring在創(chuàng)建Bean實例時,需要同時實例化其依賴的全部實例,因而導(dǎo)致死你功能下降。而使用設(shè)置注入,則避免這下問題;
尤其在某些屬性可選的情況下,多參數(shù)的構(gòu)造器更加笨拙。
spring依賴注入之構(gòu)造注入的優(yōu)點:
構(gòu)造注入可以再構(gòu)造器中決定依賴關(guān)系的注入順序,優(yōu)先依賴的優(yōu)先注入。
對于依賴關(guān)系無須變化的Bean,構(gòu)造注入更有用處;因為沒有setter方法,所有的依賴關(guān)系全部在構(gòu)造器內(nèi)設(shè)定,因此,不用擔(dān)心后續(xù)代碼對依賴關(guā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è)置注入。
【編輯推薦】