• 近期将进行后台系统升级,如有访问不畅,请稍后再试!
  • 极客文库-知识库上线!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 每日更新优质编程文章!
  • 更多功能模块开发中。。。

Spring Bean管理(XML方式)之Bean实例化的三种方式

文章目录[隐藏]

我们把类交给Spring,然后Spring帮我们生成这个类的实例,那么它是如何生成的呢?

Bean 实例化的三种方式

  • 使用类构造器实例化(默认无参数)
  • 使用静态工厂方法实例化(简单工厂模式)
  • 使用实例工厂方法实例化(工厂方法模式)

编码演示

方式一:采用无参数的构造方法的方式

新建一个包com.jikewenku.ioc.demo2,新建一个 bean1.java

package com.jikewenku.ioc.demo2;

/**
 * Bean 的实例化的三种方式:采用无参数的构造方法的方式
 */
public class Bean1 {
    public Bean1(){
        System.out.println("Bean1 被实例化了...");
    }
}

在配置文件中做相应的配置

<!--Bean 的实例化的三种方式============================-->
    <!--第一种:无参构造器的方式-->
<bean id="bean1" class="com.imooc.ioc.demo2.Bean1"/>

然后写一个测试类SpringDemo2

@Test
public void demo1(){
    // 创建工厂
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    // 通过工厂获得类的实例:
    Bean1 bean1 = (Bean1)applicationContext.getBean("bean1");
}

运行结果,显示 bean1 被实例化。说明它是调用了里面的构造方法。

方式二:静态工厂实例化方式

新建一个类 Bean2

package com.jikewenku.ioc.demo2;

/**
 * Bean 的实例化三种方式:静态工厂实例化方式
 */
public class Bean2 {

}

再创建一个类 Bean2Factory

package com.jikewenku.ioc.demo2;

/**
 * Bean2 的静态工厂
 */
public class Bean2Factory {

    public static Bean2 createBean2(){
        System.out.println("Bean2Factory 的方法已经执行了...");
        return new Bean2();
    }

}

接下来添加配置信息

<!--第二种:静态工厂的方式-->
<bean id="bean2" class="Bean2Factory" factory-method="createBean2"/>

SpringDemo2 中编写测试用例

@Test
public void demo2(){
    // 创建工厂
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    // 通过工厂获得类的实例:
    Bean2 bean2 = (Bean2)applicationContext.getBean("bean2");
}

运行程序,当我们一执行的时候,bean1 也会实例化,因为这个工厂只要一加载配置文件,会把配置文件中的类都实例化,所以构造方法也会执行,所以运行 demo2,bean1 也会实例化。

方式三:实例工厂实例化

创建一个 Bean3

package com.jikewenku.ioc.demo2;

/**
 * Bean 的实例化三种方式:实例工厂实例化
 */
public class Bean3 {

}

创建 Bean3Factory

package com.jikewenku.ioc.demo2;

/**
 * Bean3 的实例工厂
 */
public class Bean3Factory {
    public Bean3 createBean3(){
        System.out.println("Bean3Factory 执行了...");
        return new Bean3();
    }
}

修改配置文件

<!--第三种:实例工厂的方式-->
 <bean id="bean3Factory" class="Bean3Factory"/>
 <bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>

再来测试一下

@Test
public void demo3(){
    // 创建工厂
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    // 通过工厂获得类的实例:
    Bean3 bean3 = (Bean3)applicationContext.getBean("bean3");
}

运行程序,我们会发现实例工厂也被执行了。

正常情况下,我们都会采用默认的方式,也就是无参方式。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Spring Bean 管理(XML 方式)之 Bean 实例化的三种方式
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

欢迎 注册账号 登录 发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00