一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解Spring中bean實(shí)例化的三種方式

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

2020-09-11 10:46_江南一點(diǎn)雨 Java教程

本篇文章主要介紹了詳解Spring中bean實(shí)例化的三種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

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

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

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

?
1
2
3
4
5
public class user {
  public void add() {
    system.out.println("add()---------");
  }
}

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

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

ok,我們通過如下代碼進(jìn)行一個(gè)簡單的測試:

?
1
2
3
applicationcontext context = new classpathxmlapplicationcontext("applicationcontext.xml");
    user user = (user) context.getbean("user");
    system.out.println(user);

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

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

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

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

?
1
2
3
4
5
public class user2 {
  public void add() {
    system.out.println("add2()---------");
  }
}

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

?
1
2
3
4
5
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屬性,該屬性指明該類中的靜態(tài)工廠方法名為getinstance,這樣spring框架就知道調(diào)用哪個(gè)方法來獲取user2的實(shí)例了,測試代碼如下:

?
1
2
3
4
5
6
@test
  public void test2() {
    applicationcontext context = new classpathxmlapplicationcontext("applicationcontext.xml");
    user2 user = (user2) context.getbean("user2");
    user.add();
  }

測試結(jié)果如下:

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

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

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

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

?
1
2
3
4
5
public class user3 {
  public void add() {
    system.out.println("add3()---------");
  }
}

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

?
1
2
3
4
5
public class user3factory {
  public user3 getuser3() {
    return new user3();
  }
}

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

?
1
2
<bean class="org.sang.user3factory" id="user3factory"/>
<bean id="user3" factory-bean="user3factory" factory-method="getuser3"/>

第一個(gè)bean用來獲取user3factory的實(shí)例,第二個(gè)bean則根據(jù)user3factory的實(shí)例,然后指定factory-method,通過getuser3方法來獲取user3的實(shí)例。

測試代碼如下:

?
1
2
3
4
5
6
@test
public void test3() {
  applicationcontext context = new classpathxmlapplicationcontext("applicationcontext.xml");
  user3 user = (user3) context.getbean("user3");
  user.add();
}

測試結(jié)果如下:

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

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

本文案例github地址https://github.com/lenve/javaeetest/tree/master/test28-spring1

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/u012702547/article/details/56021922

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品一区二区国语对白 | 日本videossexx日本人 | 被老外玩爽的中国美女视频 | 天天碰夜夜操 | 欧美一二区视频 | 99这里只有精品66视频 | 门房秦大爷最新章节阅读 | 美女的让男人桶爽30分钟的 | 国产一区二区三区欧美 | 国产午夜亚洲精品不卡 | 亚洲黄色色图 | 亚洲欧美日韩另类在线 | 四虎影视入口 | 无敌在线视频观看免费 | 日本加勒比在线播放 | 91最新高端约会系列178 | 91精品国产麻豆国产自产在线 | 美国一级大黄大色毛片 | 免费观看大片毛片 | 清纯唯美 亚洲 | 91麻豆国产 | 免费观看一级欧美在线视频 | 加勒比伊人 | 欧美另类老女人 | 无人区乱码1区2区3区网站 | 俄罗斯一级毛片免费播放 | 日本高清免费不卡在线播放 | 午夜亚洲精品久久久久久 | 日本人和黑人一级纶理片 | 91aaa免费免费国产在线观看 | 久久精品国产在热亚洲 | 我与旗袍老师疯狂床震 | 赤坂丽女医bd无删减在线观看 | 国产精品99久久免费观看 | 亚洲成a人片777777久久 | 亚洲国产区男人本色在线观看欧美 | 欧美人禽杂交av片 | 日韩欧美国产综合精品 | 亚洲视频在线看 | 欧美午夜精品久久久久久黑人 | 亚洲国产欧美在线人成aaaa20 |