• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

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

编程语言 Geekerstar 11个月前 (05-28) 362次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

我们把类交给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