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

詳解Spring中bean實(shí)例化的三種方式

 更新時(shí)間:2017年04月14日 15:32:06   作者:_江南一點(diǎn)雨  
本篇文章主要介紹了詳解Spring中bean實(shí)例化的三種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

今天我想來(lái)說(shuō)說(shuō)如何通過(guò)xml配置來(lái)實(shí)例化bean,其實(shí)也很簡(jiǎn)單。

使用xml配置來(lái)實(shí)例化bean共分為三種方式,分別是普通構(gòu)造方法創(chuàng)建、靜態(tài)工廠創(chuàng)建、實(shí)例工廠創(chuàng)建,OK,那么接下來(lái)我們來(lái)分別看看這幾種方式。

普通構(gòu)造方法創(chuàng)建

這種創(chuàng)建方式使我們使用最多的一種創(chuàng)建方式,直接配置bean節(jié)點(diǎn)即可,比如我有一個(gè)User類(lèi),如下:

public class User {
  public void add() {
    System.out.println("add()---------");
  }
}

然后通過(guò)簡(jiǎn)單配置一個(gè)bean節(jié)點(diǎn)就可以獲取實(shí)例了,如下:

<bean class="org.sang.User" id="user"/>

OK,我們通過(guò)如下代碼進(jìn)行一個(gè)簡(jiǎn)單的測(cè)試:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User user = (User) context.getBean("user");
    System.out.println(user);

運(yùn)行輸出結(jié)果如下:

這里寫(xiě)圖片描述

靜態(tài)工廠創(chuàng)建

除了通過(guò)普通的構(gòu)造方法創(chuàng)建之外,我們也可以通過(guò)靜態(tài)構(gòu)造方法來(lái)創(chuàng)建一個(gè)bean的實(shí)例,假設(shè)我有一個(gè)類(lèi)叫做User2,如下:

public class User2 {
  public void add() {
    System.out.println("add2()---------");
  }
}

我給它創(chuàng)建一個(gè)靜態(tài)工廠,如下:

public class User2Factory {
  public static User2 getInstance() {
    return new User2();
  }
}

該工廠中有一個(gè)靜態(tài)方法,該靜態(tài)方法返回一個(gè)User2的實(shí)例,在Spring的配置文件中,我們看看如何生成User2的實(shí)例:

復(fù)制代碼 代碼如下:

<bean id="user2" class="org.sang.User2Factory" factory-method="getInstance"/>

還是bean節(jié)點(diǎn),只是多了一個(gè)factory-method屬性,該屬性指明該類(lèi)中的靜態(tài)工廠方法名為getInstance,這樣Spring框架就知道調(diào)用哪個(gè)方法來(lái)獲取User2的實(shí)例了,測(cè)試代碼如下:

@Test
  public void test2() {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User2 user = (User2) context.getBean("user2");
    user.add();
  }

測(cè)試結(jié)果如下:

這里寫(xiě)圖片描述

值得強(qiáng)調(diào)的是,這種方法并不常用。

實(shí)例工廠創(chuàng)建

小伙伴們看了靜態(tài)工廠創(chuàng)建bean實(shí)例肯定都覺(jué)得很麻煩,事實(shí)上還有比靜態(tài)工廠更麻煩的寫(xiě)法,那就是通過(guò)實(shí)例工廠來(lái)創(chuàng)建bean實(shí)例。實(shí)例工廠,顧名思義,就是我們工廠中的方法不是靜態(tài)的,比如說(shuō),我有一個(gè)實(shí)體類(lèi)叫做User3,如下:

public class User3 {
  public void add() {
    System.out.println("add3()---------");
  }
}

然后我還有一個(gè)工廠方法,如下:

public class User3Factory {
  public User3 getUser3() {
    return new User3();
  }
}

小伙伴們看到,在User3Factory類(lèi)中有一個(gè)getUser3的方法,該方法返回一個(gè)User3類(lèi)的實(shí)例,但是該方法不是靜態(tài)的,那么我們?cè)赟pring的配置文件中要進(jìn)行怎樣的配置才能獲取User3的一個(gè)實(shí)例呢?如下:

<bean class="org.sang.User3Factory" id="user3Factory"/>
<bean id="user3" factory-bean="user3Factory" factory-method="getUser3"/>

第一個(gè)bean用來(lái)獲取user3Factory的實(shí)例,第二個(gè)bean則根據(jù)User3Factory的實(shí)例,然后指定factory-method,通過(guò)getUser3方法來(lái)獲取User3的實(shí)例。

測(cè)試代碼如下:

  @Test
  public void test3() {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User3 user = (User3) context.getBean("user3");
    user.add();
  }

測(cè)試結(jié)果如下:

這里寫(xiě)圖片描述

OK,以上就是bean實(shí)例化的三種方式,最最常用的是第一種。

本文案例GitHub地址https://github.com/lenve/JavaEETest/tree/master/Test28-Spring1

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 淺復(fù)制和深復(fù)制的實(shí)例詳解

    Java 淺復(fù)制和深復(fù)制的實(shí)例詳解

    這篇文章主要介紹了Java 淺復(fù)制和深復(fù)制的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Java獲取本機(jī)IP地址的方法代碼示例(內(nèi)網(wǎng)、公網(wǎng))

    Java獲取本機(jī)IP地址的方法代碼示例(內(nèi)網(wǎng)、公網(wǎng))

    在IT領(lǐng)域獲取本機(jī)IP地址是一項(xiàng)基礎(chǔ)但重要的任務(wù),特別是在網(wǎng)絡(luò)編程、遠(yuǎn)程協(xié)作和設(shè)備通信中,這篇文章主要給大家介紹了關(guān)于Java獲取本機(jī)IP地址的方法(內(nèi)網(wǎng)、公網(wǎng)),需要的朋友可以參考下
    2024-07-07
  • Java線程創(chuàng)建(賣(mài)票),線程同步(賣(mài)包子)的實(shí)現(xiàn)示例

    Java線程創(chuàng)建(賣(mài)票),線程同步(賣(mài)包子)的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java線程創(chuàng)建(賣(mài)票),線程同步(賣(mài)包子)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Mybatis的詳細(xì)使用教程

    Mybatis的詳細(xì)使用教程

    這篇文章主要介紹了Mybatis的詳細(xì)使用教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 面向?qū)ο缶幊桃蕾?lài)注入詳解

    面向?qū)ο缶幊桃蕾?lài)注入詳解

    本文主要介紹面向?qū)ο缶幊桃蕾?lài)注入的知識(shí)資料,這里對(duì)依賴(lài)注入的資料做了詳細(xì)介紹,有興趣的小伙伴可以參考下
    2016-08-08
  • Ribbon負(fù)載均衡服務(wù)調(diào)用的示例詳解

    Ribbon負(fù)載均衡服務(wù)調(diào)用的示例詳解

    Rbbo其實(shí)就是一個(gè)軟負(fù)載均衡的客戶(hù)端組件,他可以和其他所需請(qǐng)求的客戶(hù)端結(jié)合使用,這篇文章主要介紹了Ribbon負(fù)載均衡服務(wù)調(diào)用案例代碼,需要的朋友可以參考下
    2023-01-01
  • springboot之自動(dòng)裝配全過(guò)程

    springboot之自動(dòng)裝配全過(guò)程

    這篇文章主要介紹了springboot之自動(dòng)裝配全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 在JSP頁(yè)面內(nèi)編寫(xiě)java代碼方法總結(jié)

    在JSP頁(yè)面內(nèi)編寫(xiě)java代碼方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于在JSP頁(yè)面內(nèi)編寫(xiě)java代碼方法和步驟,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • Java數(shù)組使用binarySearch()方法查找指定元素的實(shí)現(xiàn)

    Java數(shù)組使用binarySearch()方法查找指定元素的實(shí)現(xiàn)

    這篇文章主要介紹了Java數(shù)組使用binarySearch()方法查找指定元素的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • springBoot中觀察者模式詳解

    springBoot中觀察者模式詳解

    觀察者模式增強(qiáng)應(yīng)用的靈活性和可擴(kuò)展性,利用java.util.Observable和java.util.Observer實(shí)現(xiàn),Spring通過(guò)ApplicationEvent類(lèi)和事件廣播器管理事件,支持應(yīng)用上下文和請(qǐng)求相關(guān)的事件處理,實(shí)現(xiàn)松耦合和動(dòng)態(tài)通知,優(yōu)點(diǎn)包括松耦合、動(dòng)態(tài)通知、易于擴(kuò)展
    2024-11-11

最新評(píng)論

元谋县| 华坪县| 通化市| 瓮安县| 平舆县| 曲周县| 合江县| 永城市| 青龙| 界首市| 灵宝市| 美姑县| 开远市| 邮箱| 长岛县| 湖州市| 石台县| 嘉荫县| 泰州市| 诸暨市| 楚雄市| 大田县| 滕州市| 卢氏县| 化隆| 竹北市| 台东市| 湖口县| 思茅市| 武强县| 天峻县| 迭部县| 江山市| 衡东县| 建平县| 深水埗区| 西盟| 中江县| 修文县| 敦化市| 阿克苏市|