最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Bean三種注入方式詳解

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

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

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

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

@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為其實(shí)現(xiàn)類,通過這種方式,可以通過Spring容器初始化NormalCust Bean,進(jìn)而調(diào)用recharge()方法。

構(gòu)造器注入主要用于某些類因?yàn)槟撤N原因不能作為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)造器注入特別適合多線程的編程,因?yàn)榫€程不能定義為Bean,否則不僅會因?yàn)樗且粋€單例,而且會被Spring容器管理。(當(dāng)然你可以去定義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ù)實(shí)際應(yīng)用場景靈活選擇。也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Data Jpa的四種查詢方式詳解

    Spring Data Jpa的四種查詢方式詳解

    這篇文章主要介紹了Spring Data Jpa的四種查詢方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • javaWeb使用Kaptcha組件生成驗(yàn)證碼

    javaWeb使用Kaptcha組件生成驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了javaWeb使用Kaptcha組件生成驗(yàn)證碼的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Mybatis 傳輸List的實(shí)現(xiàn)代碼

    Mybatis 傳輸List的實(shí)現(xiàn)代碼

    本文通過實(shí)例代碼給大家介紹了mybatis傳輸list的實(shí)現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-09-09
  • Springboot如何優(yōu)雅地進(jìn)行字段校驗(yàn)

    Springboot如何優(yōu)雅地進(jìn)行字段校驗(yàn)

    這篇文章主要給大家介紹了關(guān)于Springboot如何優(yōu)雅地進(jìn)行字段校驗(yàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java項(xiàng)目防止SQL注入的幾種方式

    Java項(xiàng)目防止SQL注入的幾種方式

    SQL注入是一種常見的攻擊方式,黑客試圖通過操縱應(yīng)用程序的輸入來執(zhí)行惡意SQL查詢,從而繞過認(rèn)證和授權(quán),竊取、篡改或破壞數(shù)據(jù)庫中的數(shù)據(jù),本文主要介紹了Java項(xiàng)目防止SQL注入的幾種方式,感興趣的可以了解一下
    2023-12-12
  • Json在Struts中的轉(zhuǎn)換與傳遞方法

    Json在Struts中的轉(zhuǎn)換與傳遞方法

    下面小編就為大家?guī)硪黄狫son在Struts中的轉(zhuǎn)換與傳遞方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Java的Jackson庫中復(fù)雜對象集合的幾種簡單轉(zhuǎn)換

    Java的Jackson庫中復(fù)雜對象集合的幾種簡單轉(zhuǎn)換

    本文主要介紹了Java的Jackson庫中復(fù)雜對象集合的幾種簡單轉(zhuǎn)換。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門)

    IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門)

    這篇文章主要介紹了IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • java基礎(chǔ)的詳細(xì)了解第七天

    java基礎(chǔ)的詳細(xì)了解第七天

    這篇文章對Java編程語言的基礎(chǔ)知識作了一個較為全面的匯總,在這里給大家分享一下。需要的朋友可以參考,希望能給你帶來幫助
    2021-08-08
  • Spring?Boot中WebMvcConfig配置詳解及示例代碼

    Spring?Boot中WebMvcConfig配置詳解及示例代碼

    WebMvcConfig是一個配置類,它繼承了WebMvcConfigurationSupport,允許我們對SpringMVC進(jìn)行更細(xì)粒度的控制,這篇文章主要給大家介紹了關(guān)于Spring?Boot中WebMvcConfig配置詳解及示例的相關(guān)資料,需要的朋友可以參考下
    2024-03-03

最新評論

青州市| 腾冲县| 公安县| 铜梁县| 宜黄县| 蛟河市| 唐海县| 大足县| 齐河县| 武山县| 攀枝花市| 炎陵县| 兴隆县| 临泽县| 双鸭山市| 甘谷县| 康保县| 长汀县| 布拖县| 行唐县| 顺昌县| 龙门县| 山丹县| 金山区| 曲麻莱县| 金昌市| 巴彦淖尔市| 舞阳县| 五家渠市| 西和县| 嘉峪关市| 孝义市| 微博| 沈阳市| 安吉县| 樟树市| 宁远县| 丹江口市| 贞丰县| 揭西县| 嘉鱼县|