构造方法注入和设值注入有什么区别?
請(qǐng)注意以下明顯的區(qū)別:
1.在設(shè)值注入方法支持大部分的依賴注入,如果我們僅需要注入int、string 和long 型的變量,我們不要用設(shè)值的方法注入。對(duì)于基本類型,如果我們沒(méi)有注入的話,可以為基本類型設(shè)置默認(rèn)值。在構(gòu)造方法注入不支持大部分的依賴注入,因?yàn)樵谡{(diào)用構(gòu)造方法中必須傳入正確的構(gòu)造參數(shù),否則的話為報(bào)錯(cuò)。
2.設(shè)值注入不會(huì)重寫構(gòu)造方法的值。如果我們對(duì)同一個(gè)變量同時(shí)使用了構(gòu)造方法注入又使用了設(shè)置方法注入的話,那么構(gòu)造方法將不能覆蓋由設(shè)值方法注入的值。很明顯,因?yàn)闃?gòu)造方法盡在對(duì)象被創(chuàng)建時(shí)調(diào)用。
3.在使用設(shè)值注入時(shí)有可能還不能保證某種依賴是否已經(jīng)被注入,也就是說(shuō)這時(shí)對(duì)象的依賴關(guān)系有可能是不完整的。而在另一種情況下,構(gòu)造器注入則不允許生成依賴關(guān)系不完整的對(duì)象。
4. 在設(shè)值注入時(shí)如果對(duì)象A 和對(duì)象B 互相依賴, 在創(chuàng)建對(duì)象A 時(shí)Spring 會(huì)拋出sObjectCurrentlyInCreationException 異常,因?yàn)樵贐 對(duì)象被創(chuàng)建之前A 對(duì)象是不能被創(chuàng)建的,反之亦然。所以Spring 用設(shè)值注入的方法解決了循環(huán)依賴的問(wèn)題,因?qū)ο蟮脑O(shè)值方法是在對(duì)象被創(chuàng)建之前
被調(diào)用的。
?
總結(jié)
以上是生活随笔為你收集整理的构造方法注入和设值注入有什么区别?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 请举例说明@Qualifier 注解?
- 下一篇: Spring 框架中有哪些不同类型的事件