spring常用的三種依賴注入方式

大雄45發表於2021-04-28
導讀 平常的java開發中,程式設計師在某個類中需要依賴其它類的方法,則通常是new一個依賴類再呼叫類例項的方法,這種開發存在的問題是new的類例項不好統一管理,spring提出了依賴注入的思想,即依賴類不由程式設計師例項化,而是透過spring容器幫我們new指定例項並且將例項注入到需要該物件的類中。

依賴注入的另一種說法是“控制反轉”,通俗的理解是:平常我們new一個例項,這個例項的控制權是我們程式設計師,而控制反轉是指new例項工作不由我們程式設計師來做而是交給spring容器來做。Spring透過DI(依賴注入)實現IOC(控制反轉),常用的注入方式主要有三種:構造方法注入,set方法引數注入,介面注入。

一.目前使用最廣泛的 @Autowired:自動裝配

基於@Autowired的自動裝配,預設是根據型別注入,可以用於構造器、介面、方法注入,使用方式如下:

@Autowired
構造方法、方法、介面

@Autowired預設是根據引數型別進行自動裝配,且必須有一個Bean候選者注入預設required=true,如果允許出現0個Bean候選者需要設定屬性“required=false”,“required”屬性含義和@Required一樣,只是@Required只適用於基於XML配置的setter注入方式,只能打在setting方法上。

構造器注入

透過將@Autowired註解放在構造器上來完成構造器注入,預設構造器引數透過型別自動裝配,如下所示:

 public class Test1 {  
    private MessageInterface message;  
    @Autowired //構造器注入  
    private Test1(MessageInterface message) {  
        this.message = message;  
    } 
    //省略getter和setter  
  }
介面注入

透過將@Autowired註解放在構造器上來完成介面注入。

 public class Test2 {  
    @Autowired //介面注入  
    private MessageInterface messageInterface;  
    //省略getter和setter  
}
方法引數注入

透過將@Autowired註解放在方法上來完成方法引數注入。

 public class Test3 {  
    private MessageInterface message;  
 
    @Autowired //setter方法注入  
    public void setMessage(MessageInterface message) {  
        this.message = message;  
    }  
    public String getMessage() {  
        return message;  
    }  
}
 public class Test4 {  
    private MessageInterface message;  //
    private Listlist;  
    @Autowired(required = true) //任意一個或多個引數方法注入  
    private void initMessage(MessageInterface message, ArrayListlist) {  
        this.message = message;  
        this.list = list;  
    }  
    //省略getter和setter  
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2770212/,如需轉載,請註明出處,否則將追究法律責任。

相關文章