QXQZX's Blog

在学习Spring bean的实例化方式的时候遇到的一个问题,Spring bean实例化有3种方法

  • 通过类的构造器生成
  • 通过静态工厂方法创建
  • 通过实例工厂方法创建

那么问题来了,什么是静态工厂方法,什么是实例工厂方法?两者有什么区别呢?

静态工厂方法

就是直接可以通过静态方法来实例化一个对象

1
2
3
4
5
6
7
public class HelloWorldFactory {
public static HelloWorld getInstance(){
return new HelloWorld();
}
}
// 创建的时候
HelloWorldFactory.getInstance();

创建 HelloWorld 对象直接可以调用getInstance方法来进行实现

实例工厂方法

就是先创建类对象,如何通过对象来调用创建实例对象的方法

1
2
3
4
5
6
7
8
public class HelloWorldFactory {
public HelloWorld createHelloWorld(){
return new HelloWorld();
}
}
// 创建的时候
HelloWorldFactory helloFactory = new HelloWorldFactory();
helloFactory.createHelloWorld();

关于applicationContext.xml

1
2
3
4
5
6
7
<!--
创建对象的第二种方式:利用静态工厂方法
factory-method:静态工厂类的获取对象的静态方法
class:静态工厂类的全类名
静态工厂方法 工厂不需要实例化
-->
<bean id="HelloStaticFactory" factory-method="getInstances" class="com.coder.ioc.HelloStaticFactory"></bean>
1
2
3
4
5
6
7
8
<!--
创建对象的第三种方式:利用实例工厂方法
factory-bean:指定当前Spring中包含工厂方法的beanID
factory-method:工厂方法名称
实例工厂方法是先将工厂实例化
-->
<bean id="HelloInstanceFactory" class="com.coder.ioc.HelloInstanceFactory"></bean>
<bean id="instance" factory-bean="HelloInstanceFactory" factory-method="getInstance"></bean>

 评论