亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Spring中bean實例化的三種方式

發布時間:2020-09-06 09:58:05 來源:腳本之家 閱讀:157 作者:_江南一點雨 欄目:編程語言

今天我想來說說如何通過xml配置來實例化bean,其實也很簡單。

使用xml配置來實例化bean共分為三種方式,分別是普通構造方法創建、靜態工廠創建、實例工廠創建,OK,那么接下來我們來分別看看這幾種方式。

普通構造方法創建

這種創建方式使我們使用最多的一種創建方式,直接配置bean節點即可,比如我有一個User類,如下:

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

然后通過簡單配置一個bean節點就可以獲取實例了,如下:

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

OK,我們通過如下代碼進行一個簡單的測試:

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

運行輸出結果如下:

詳解Spring中bean實例化的三種方式

靜態工廠創建

除了通過普通的構造方法創建之外,我們也可以通過靜態構造方法來創建一個bean的實例,假設我有一個類叫做User2,如下:

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

我給它創建一個靜態工廠,如下:

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

該工廠中有一個靜態方法,該靜態方法返回一個User2的實例,在Spring的配置文件中,我們看看如何生成User2的實例:

復制代碼 代碼如下:

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

還是bean節點,只是多了一個factory-method屬性,該屬性指明該類中的靜態工廠方法名為getInstance,這樣Spring框架就知道調用哪個方法來獲取User2的實例了,測試代碼如下:

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

測試結果如下:

詳解Spring中bean實例化的三種方式

值得強調的是,這種方法并不常用。

實例工廠創建

小伙伴們看了靜態工廠創建bean實例肯定都覺得很麻煩,事實上還有比靜態工廠更麻煩的寫法,那就是通過實例工廠來創建bean實例。實例工廠,顧名思義,就是我們工廠中的方法不是靜態的,比如說,我有一個實體類叫做User3,如下:

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

然后我還有一個工廠方法,如下:

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

小伙伴們看到,在User3Factory類中有一個getUser3的方法,該方法返回一個User3類的實例,但是該方法不是靜態的,那么我們在Spring的配置文件中要進行怎樣的配置才能獲取User3的一個實例呢?如下:

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

第一個bean用來獲取user3Factory的實例,第二個bean則根據User3Factory的實例,然后指定factory-method,通過getUser3方法來獲取User3的實例。

測試代碼如下:

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

測試結果如下:

詳解Spring中bean實例化的三種方式

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

株洲市| 南通市| 仙居县| 靖江市| 增城市| 孝昌县| 固始县| 依安县| 米泉市| 凉城县| 兴国县| 江油市| 二手房| 临漳县| 页游| 光泽县| 宁津县| 通江县| 乐亭县| 阿拉善盟| 汝南县| 弋阳县| 淄博市| 上犹县| 西盟| 重庆市| 迭部县| 山阳县| 赞皇县| 临夏县| 福建省| 长岭县| 贡嘎县| 阿拉善盟| 聊城市| 西乡县| 祁门县| 永德县| 灌南县| 登封市| 漾濞|