gpt4 book ai didi

详解Spring中bean实例化的三种方式

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解Spring中bean实例化的三种方式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

今天我想来说说如何通过xml配置来实例化bean,其实也很简单.

使用xml配置来实例化bean共分为三种方式,分别是普通构造方法创建、静态工厂创建、实例工厂创建,ok,那么接下来我们来分别看看这几种方式.

普通构造方法创建 。

这种创建方式使我们使用最多的一种创建方式,直接配置bean节点即可,比如我有一个user类,如下:

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

然后通过简单配置一个bean节点就可以获取实例了,如下:

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

ok,我们通过如下代码进行一个简单的测试:

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

运行输出结果如下:

详解Spring中bean实例化的三种方式

静态工厂创建 。

除了通过普通的构造方法创建之外,我们也可以通过静态构造方法来创建一个bean的实例,假设我有一个类叫做user2,如下:

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

我给它创建一个静态工厂,如下:

?
1
2
3
4
5
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的实例了,测试代码如下:

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

测试结果如下:

详解Spring中bean实例化的三种方式

值得强调的是,这种方法并不常用.

实例工厂创建 。

小伙伴们看了静态工厂创建bean实例肯定都觉得很麻烦,事实上还有比静态工厂更麻烦的写法,那就是通过实例工厂来创建bean实例。实例工厂,顾名思义,就是我们工厂中的方法不是静态的,比如说,我有一个实体类叫做user3,如下:

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

然后我还有一个工厂方法,如下:

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

小伙伴们看到,在user3factory类中有一个getuser3的方法,该方法返回一个user3类的实例,但是该方法不是静态的,那么我们在spring的配置文件中要进行怎样的配置才能获取user3的一个实例呢?如下:

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

第一个bean用来获取user3factory的实例,第二个bean则根据user3factory的实例,然后指定factory-method,通过getuser3方法来获取user3的实例.

测试代码如下:

?
1
2
3
4
5
6
@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 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

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

最后此篇关于详解Spring中bean实例化的三种方式的文章就讲到这里了,如果你想了解更多关于详解Spring中bean实例化的三种方式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com