亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring學習之依賴注入的方法(三種)

 更新時間:2017年07月11日 10:58:46   作者:顏洛濱  
本篇文章主要介紹了Spring學習之依賴注入的方法(三種),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

spring框架為我們提供了三種注入方式,分別是set注入,構造方法注入,接口注入。今天就和大家一起來學習一下

依賴注入的基本概念

依賴注入(Dependecy Injection),也稱為IoC(Invert of Control),是一種有別于傳統(tǒng)的面向對象開發(fā)的思想,主要用于對應用進行解耦。簡單的理解就是說,本來是由應用服務自己創(chuàng)建的對象,數(shù)據,交給第三方來負責創(chuàng)建,準備,并且由第三方將對應的內容注入到應用服務中來,從而實現(xiàn)了對象的創(chuàng)建于對象的應用之間的解耦,通過這種方式,應用服務可以最小程度地減少與對象實體之前的關聯(lián)(只需要使用即可,而不關心其來源,對應的實現(xiàn)等等),從而保持了應用服務與對象之間的弱耦合關系。

依賴注入的簡單實現(xiàn)

可能通過文字的表達,對于依賴注入不是很好理解,不過,通過簡單的代碼實現(xiàn),就可以很輕松的理解了,下面通過原始的做法以及依賴注入的做法來進行對比,來加深對依賴注入的理解

/**
* 日志服務
*/
class LogService{

  // 注意這里,這里是手動創(chuàng)建對應的LogDao實例對象
  private LogDao logDao = new DBLogDao(); 

  public void save(){
    logDao.save();
  }
}

/**
* 日志DAO接口
*/
interface LogDao{

  void save();
}

/**
* 日志DAO的具體實現(xiàn),將日志保存到數(shù)據庫中
*/
class DBLogDao implements LogDao{

  @Override
  public void save() {
    System.out.println("Save to Database");
  }
}

從上面的代碼中可以看到,當需要LogDao對象的時候,是直接在服務中創(chuàng)建具體的實現(xiàn),也就是new DBLogDao(),這種方式雖然方便,但是存在一定的缺點,比如說,當想要切換對應的實現(xiàn),比如說XMLLogDao的時候,就需要打開對應的代碼,創(chuàng)建XMLLogDao對象,并且將其交給LogService;而且,如果LogDao的創(chuàng)建過程比較繁瑣的時候,LogService在這種實現(xiàn)方式中,就需要知道LogDao的實現(xiàn)過程,而這顯然是不太合理的,因為LogService只需要知道LogDao的存在,以及使用方式即可,而并不需要知道它的創(chuàng)建過程。

接下來來看下依賴注入或者說控制反轉是怎么解決這些問題的。

class LogService{

  // 注意這里,這里并沒創(chuàng)建對應的對象
  private LogDao logDao;

  // 通過屬性將LogDao注入到LogService中,這也就是依賴注入的來源
  // 依賴別人講所需要的對象注入進來
  public void setLogDao(LogDao logDao) {
    this.logDao = logDao;
  }

  public void save(){
    logDao.save();
  }
}

// LogDao接口及其實現(xiàn)DBLogDao同上,這里省略

/**
* 模擬的容器類,負責創(chuàng)建各個對象,并且將對應的依賴對象注入進去
*/
class Container{

  public void create(){

    // 創(chuàng)建對象
    LogService logService = new LogService();
    LogDao logDao = new DBLogDao();

    // 注入LogDao對象
    logService.setLogDao(logDao);
  }
}

可能這里你會覺得說,create方法中也是手動創(chuàng)建了DBLogDao對象,其實不然,對于create方法來說,它只是負責創(chuàng)建對象,并不管對象的用途,也就是說,這里create方法可以通過各種其他手段,比如利用反射技術,再通過配置文件來配置對應的類的信息,這樣,當需要修改具體的實現(xiàn)的時候,只需要修改配置文件,create就會創(chuàng)建對應的對象,并且將其注入到LogService中,而這個過程對于LogService來說是透明的,LogService只知道自己有一個LogDao的對象,而不知道,也不需要知道LogDao對象是怎么來的。也就是實現(xiàn)了創(chuàng)建與使用的解耦。

至于控制反轉名詞,其實也是很顯然的嘛,本來是LogService自己創(chuàng)建的對象,現(xiàn)在將其交給Container來創(chuàng)建了,那么創(chuàng)建對象的權限不就是反轉了嘛^_^

一般來說,依賴注入有三種方式,分別是屬性注入,也就是上面我們看到的內容,還有一種是構造器注入,也就是通過構造器注入對應的對象,還有一種不常用的接口注入,其實本質上也是屬于屬性注入。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java 查找list中重復數(shù)據實例詳解

    java 查找list中重復數(shù)據實例詳解

    這篇文章主要介紹了java 查找list中重復數(shù)據實例詳解的相關資料,需要的朋友可以參考下
    2017-01-01
  • struts2實現(xiàn)多文件上傳

    struts2實現(xiàn)多文件上傳

    這篇文章主要為大家詳細介紹了struts2實現(xiàn)多文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java學習基礎之安裝JDK/配置JDK環(huán)境&IEDA工具安裝

    Java學習基礎之安裝JDK/配置JDK環(huán)境&IEDA工具安裝

    這篇文章主要介紹了Java學習基礎系列文章的第一篇,主要內容是安裝JDK/配置JDK環(huán)境&IEDA工具安裝的相關資料,需要的朋友可以參考下
    2020-02-02
  • Java中Integer類型值相等判斷方法

    Java中Integer類型值相等判斷方法

    這篇文章主要給大家介紹了關于Java中Integer類型值相等判斷的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • SpringBoot生產環(huán)境打包如何去除無用依賴

    SpringBoot生產環(huán)境打包如何去除無用依賴

    這篇文章主要介紹了SpringBoot生產環(huán)境打包如何去除無用依賴問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 基于SpringBoot實現(xiàn)自動裝配返回屬性的設計思路

    基于SpringBoot實現(xiàn)自動裝配返回屬性的設計思路

    這篇文章主要介紹了基于SpringBoot實現(xiàn)自動裝配返回屬性,這里涉及到的技術知識點有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-03-03
  • Java輸入輸出流的使用詳細介紹

    Java輸入輸出流的使用詳細介紹

    本篇文章介紹了,在Java中輸入輸出流的使用詳細分析。需要的朋友參考下
    2013-04-04
  • Java使用跳轉結構實現(xiàn)隊列和棧流程詳解

    Java使用跳轉結構實現(xiàn)隊列和棧流程詳解

    這篇文章主要介紹了Java使用跳轉結構實現(xiàn)隊列和棧流程,連續(xù)結構和跳轉結構是數(shù)據結構中常見的兩種基本數(shù)據結構,而我們本次的主角棧和隊列都 既可以使用使用跳轉結構實現(xiàn)也可以使用連續(xù)結構實現(xiàn)
    2023-04-04
  • Java如何判斷一個url是否有效

    Java如何判斷一個url是否有效

    URL類提供了一個openConnection()方法,可以打開一個連接并返回一個URLConnection對象,該對象可以用來檢查連接是否有效,這篇文章主要介紹了Java判斷一個url是否有效,需要的朋友可以參考下
    2023-09-09
  • Java讀取.properties配置文件方法示例

    Java讀取.properties配置文件方法示例

    這篇文章主要介紹了Java讀取.properties配置文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03

最新評論