欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Bean三種注入方式詳解

 更新時間:2017年11月08日 09:05:53   作者:民團司令  
本篇文章主要介紹了Spring Bean三種注入方式詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在Spring容器中為一個bean配置依賴注入有三種方式:

  1.  使用屬性的setter方法注入  這是最常用的方式;
  2.  使用構(gòu)造器注入;
  3.  使用Filed注入(用于注解方式).

Field注入是最常見的一種方式,可以采用 @Autowired 對Bean類的接口進行初始化,代碼如下

@ContextConfiguration({"/META-INF/spring/amazing-base.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringInjectionTest {
  @Autowired
  private Cust normalCust;
  
  @Test
  public void testFieldInjection() {
    System.out.println("testFieldInjection begin");
    normalCust.recharge();
    System.out.println("testFieldInjection end");
  }
}

Cust為接口,NormalCust為其實現(xiàn)類,通過這種方式,可以通過Spring容器初始化NormalCust Bean,進而調(diào)用recharge()方法。

構(gòu)造器注入主要用于某些類因為某種原因不能作為Bean,只是一個普通類??梢酝ㄟ^類的構(gòu)造方法傳入需要調(diào)用的Bean接口。

@ContextConfiguration({"/META-INF/spring/amazing-base.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringInjectionTest {
  @Autowired
  private Cust normalCust;
  
  @Test
  public void testConstructorInjection() {
    System.out.println("testConstructorInjection begin");
    ChargeThread thread = new ChargeThread(normalCust);
    thread.run();
    System.out.println("testConstructorInjection end");
  }
  
}
public class ChargeThread implements Runnable {
  
  private Cust cust;
  
  public ChargeThread(Cust cust) {
    this.cust = cust;
  }

  public void run() {
    cust.recharge();
  }

}

上面的代碼通過初始化一個線程,在初始化的時候傳入Bean,在線程的類中調(diào)用Bean的充值方法。構(gòu)造器注入特別適合多線程的編程,因為線程不能定義為Bean,否則不僅會因為它是一個單例,而且會被Spring容器管理。(當然你可以去定義Bean為原型Bean,能夠有多個副本,脫離Spring容器的管理),最重要的是我們要用線程池,由線程池來管理線程。

還有一種Setter方法注入,這種方式能用于final類的靜態(tài)方法,例如有一個充值的Util類,該類是final類,其方法是靜態(tài)方法。

public class SpringInjectionTest {
  @Test
  public void testSetterInjection() {
    System.out.println("testSetterInjection begin");
    String result = RechargeUtil.InstantRecharge();
    System.out.println("testSetterInjection end, " + result);
  }

}

@Component
public final class RechargeUtil {
  
  private RechargeUtil() {
    
  }
  
  private static Cust normalCust;
  
  @Autowired
  public void setNormalCust(Cust normalCust) {
    RechargeUtil.normalCust = normalCust;
  }

  public static String InstantRecharge() {
    normalCust.recharge();
    return "InstantRecharge Success!";
  }
}

最后一種方式也成功了將normalCust注入到了RechargeUtil中。

以上三種注入方式,讀者可以根據(jù)實際應用場景靈活選擇。也希望大家多多支持腳本之家。

相關文章

  • Java在Map轉(zhuǎn)Json字符串時出現(xiàn)"\"轉(zhuǎn)義字符的解決辦法

    Java在Map轉(zhuǎn)Json字符串時出現(xiàn)"\"轉(zhuǎn)義字符的解決辦法

    當一個Map被轉(zhuǎn)成Json字符串后,被添加到另一個Map中,會出現(xiàn)被加上“\”轉(zhuǎn)義字符的情況,這個時候該如何解決呢,下面就來和小編一起了解一下
    2023-07-07
  • Java開啟線程的四種方法案例詳解

    Java開啟線程的四種方法案例詳解

    這篇文章主要介紹了Java開啟線程的四種方法,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Spring Cloud實現(xiàn)提供API給客戶端的方法詳解

    Spring Cloud實現(xiàn)提供API給客戶端的方法詳解

    這篇文章主要給大家介紹了關于Spring Cloud實現(xiàn)提供API給客戶端的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • 關于cron表達式每天整點執(zhí)行一次的問題

    關于cron表達式每天整點執(zhí)行一次的問題

    這篇文章主要介紹了關于cron表達式每天整點執(zhí)行一次的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Spring Boot web項目的TDD流程

    Spring Boot web項目的TDD流程

    TDD(Test-driven development) 測試驅(qū)動開發(fā),簡單點說就是編寫測試,再編寫代碼。這是首要一條,不可動搖的一條,先寫代碼后寫測試的都是假TDD。
    2021-05-05
  • SpringMVC全局異常處理的三種方式

    SpringMVC全局異常處理的三種方式

    這篇文章主要介紹了SpringMVC全局異常處理的三種方式,幫助大家更好的理解和使用springmvc,感興趣的朋友可以了解下
    2021-01-01
  • 深入了解Java SpringBoot自動裝配原理

    深入了解Java SpringBoot自動裝配原理

    在使用springboot時,很多配置我們都沒有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動裝配。本文將詳細為大家講解SpringBoot的自動裝配原理,需要的可以參考一下
    2022-03-03
  • SpringBoot項目攔截器獲取Post方法的請求body實現(xiàn)

    SpringBoot項目攔截器獲取Post方法的請求body實現(xiàn)

    本文主要介紹了SpringBoot項目攔截器獲取Post方法的請求body,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java 靜態(tài)數(shù)據(jù)初始化的示例代碼

    Java 靜態(tài)數(shù)據(jù)初始化的示例代碼

    這篇文章主要介紹了Java 靜態(tài)數(shù)據(jù)初始化的示例代碼,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • Java經(jīng)典排序算法之冒泡排序代碼實例

    Java經(jīng)典排序算法之冒泡排序代碼實例

    這篇文章主要介紹了Java經(jīng)典排序算法之冒泡排序代碼實例,相鄰兩元素進行比較,如過左側(cè)元素大于右側(cè)元素,則進行交換,每完成一次循環(huán)就將最大元素排在最后,下一次循環(huán)是將其它的數(shù)進行類似操作,需要的朋友可以參考下
    2023-11-11

最新評論