Bean的实例化方式
前三种方式中,factory-bean是我们自定义的,factory-method也是我们自己定义的。
构造方法
默认情况下,会调用Bean的无参数构造方法。
简单工厂模式实例化
<bean id="vipBean" class="com.powernode.spring6.bean.VipFactory" factory-method="get"/>
public class VipFactory {public static Vip get(){return new Vip();}
}
通过factory-bean实例化(通过工厂方法模式进行实例化)
<bean id="orderFactory" class="com.powernode.spring6.bean.OrderFactory"/>
<bean id="orderBean" factory-bean="orderFactory" factory-method="get"/>
通过FactoryBean接口实例化
以上的第三种方式中,factory-bean是我们自定义的,factory-method也是我们自己定义的。
在Spring中,当你编写的类直接实现FactoryBean接口之后,factory-bean不需要指定了,factory-method也不需要指定了。
factory-bean会自动指向实现FactoryBean接口的类,factory-method会自动指向**getObject()**方法。
<bean id="personBean" class="com.powernode.spring6.bean.PersonFactoryBean"/>
public class PersonFactoryBean implements FactoryBean<Person> {@Overridepublic Person getObject() throws Exception {return new Person();}@Overridepublic Class<?> getObjectType() {return null;}@Overridepublic boolean isSingleton() {// true表示单例// false表示原型return true;}
}
BeanFactory 和 FactoryBean 的区别