Spring Bean的三种管理方式

2018-06-05  本文已影响0人  杨凯飞

1.使用类构造器实例化(默认无参数) 

2.使用静态工厂方法实例化(简单工厂模式) 

3.使用实例工厂方法实例化(工厂方法模式)

第一种

    使用它的无参构造方法来实例化,如下图

Bean1的类 配置Bean1 实例化Bean1

第二种

    首先创建一个Bean2类

package com.jiaoshou.ioc.demo2;

/**

* 使用静态工厂方法实例化(简单工厂模式)

*/

public class Bean2 { }

    然后再创建一个Bean2的静态工厂类

package com.jiaoshou.ioc.demo2;

/**

* Bean2的静态工厂

*/

    public class Bean2Factory {

        public static Bean2 getBean2() {

            System.out.println("Bean2实例化了,并且Bean2Factory也执行了");

            return new Bean2();

        }

    }

配置applicationContext.xml,

<bean id="bean2" class="com.jiaoshou.ioc.demo2.Bean2Factory" factory-method="getBean2">

其中的 factory-method为选择这个类的方法

class的值是静态工厂类,而不是Bean2

在方法中运行

@Test

public void demo2() {

    //创建工程

    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

    Bean2 bean2=(Bean2) applicationContext.getBean("bean2");

}

第三种

    首先创建一个Bean3类

package com.jiaoshou.ioc.demo2;

/**

* 使用实例工厂方法实例化(工厂方法模式)

*/

public class Bean3 {

}

然后再创建一个Bean3的实例工厂类

package com.jiaoshou.ioc.demo2;

/**

* Bean3的实例工厂

*/

public class Bean3Factory {

    public Bean3 getBean3() {

        System.out.println("Bean3实例化了,并且Bean3Factory也执行了");

        return new Bean3();

    }

}

配置applicationContext.xml

<bean id="bean3Factory" class="com.jiaoshou.ioc.demo2.Bean3Factory"/>

<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"/>

在方法中运行

@Test

public void demo3() {

    //创建工程

    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

    Bean3 bean3=(Bean3) applicationContext.getBean("bean3");

}

总结: 静态工厂方法和实例工厂方法方法的区别

    1.在建立工厂类的时候一个是静态的一个不是静态的

    2.在配置XML的时候,实例工厂需要显配置实例工厂,然后再配置要实例的类,因为静态的工厂类可以直接通过类名得到方法,而非静态类不能使用对象.方法。

上一篇 下一篇

猜你喜欢

热点阅读