Spring IOC 中三種注入方式


項目錯誤知識點記錄

正文

  最近在項目的時候,用到Spring框架,Spring框架提供了一種IOC的自動注入功能,可以很輕松的幫助我們創建一個Bean,這樣就省的我們四處寫new Object()這樣的代碼了。IOC提供了三種注入方式,接口注入,set方法注入以及構造器注入,三種注入方式使用起來都很easy,具體的使用方法網上都有很多,大家可以自行搜索百度...

  那天當我使用接口注入的時候,發現IDEA給我一個警告(以前也有這樣的警告,只不過我沒太注意),看了看是讓我采用構造器注入方式。這就讓我很不解了,以前我就知道IOC中提供三種注入方式,但是卻一直不理解它們的區別(始終感覺都是注入,只要能注入Bean,就行啦~)。但是通過IDEA的提示,我發現這件事情不簡單,於是我好好的研究了一下這三種注入方式,畢竟知己知彼才能百戰不殆~

首先來介紹一下IOC的注入方式,IOC注入方式有三種,

  1. 接口注入:如果采用接口注入一個Bean,那么通過注入的Bean就必須要實現這個接口(這很霸道對不對,我想實現什么接口,還需要規定)...
  2. set方法注入:如果采用set注入一個Bean,那么只需要為Bean中所需要的一些組件提供set方法就可以,通過set方法注入比較清晰,大家一看就知道(哦~原來你想這個Bean提供了這些組件)...
  3. 構造器注入:如果采用構造器注入方式,那么首先為這個Bean提供自定義的構造函數,構造函數中需要的參數就是類中的組件實例。

  這三種方法相互比較一下,會發現接口注入很明顯不好,就如同我上面說的太霸道了,而set方法相對於接口注入來說比較好,但是我們考慮一種情況,那就是如果Bean所需要的組件太多了,那我們就需要提供好多set方法....很崩潰,這個類會很長...很長...。構造器注入方式,算是Spring官方建議的方式,因為它只需要提供一個構造函數即可,首先代碼不多,其次set方法中給使用者提供了太多的信息,例如如果Bean中需要3個組件,而使用這只set了其中2個組件,那么調用這個Bean的時候,就會可能....報錯。這很明顯是一個缺點,在設計類的時候,我們都知道底層的封裝,不要讓使用者了解過多的類的信息...

  綜上,就是一個警告帶給我的知識...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM