Spring中三种创建Bean对象的方式

创建Bean的三种方式:

1、 使用类中的默认构造函数创建对象

spring的配置文件中使用Bean标签,配以id和class属性之后,且没有其他属性和标签时,采用的就是默认构造函数创建Bean对象。故类中要提供默认构造函数

如果没有编写任何构造方法,那么编译器会默认赠送一个构造方法,没有参数,方法体什么事都不做。一旦编写了一个构造方法(包括带参数的),那么编译器不再赠送。

 构造方法也可以进行重载,即方法名称相同,参数列表不同叫方法重载。如果给构造函数加一个参数,且没有重写默认构造函数,此时表示默认构造函数没有了,对象无法创建。

 则会实例化失败

 此时,配置文件报错:

2、 我们在实际开发中,有可能会用到Jar包中的类,存在jar包中的类都是字节码文件,我们是没法通过修改源码的方式来提供默认构造函数使用普通工厂中的方法创建对象,即使用类中的普通方法创建对象并存入spring容器

现在我们模拟一个工厂类,该工厂类为jar包中的类,类中提供了一个方法,通过这个方法我们可以得到一个AccountService,由于这个类是jar包中的类,无法通过修改源码的方式来提供默认构造函数从而无法得到AccountService对象。

 

即先反射创建InstanceFactory类的对象,

<bean id="instanceFactory" class="com.itheima.factory.InstanceFactory"></bean>

再通过该对象调用类中的方法来创建AccountService对象。

<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"></bean>

其中:factory-bean属性指定工厂Bean对象,factory-method属性指定哪个方法来获取对象。

3、 使用类中的静态方法创建对象,并存入spring容器。

StaticFactory类模拟jar包中的类

<bean id="accountService" class="com.itheima.factory.StaticFactory" factory-method="getAccountService"></bean>

 

 

原文地址:https://www.cnblogs.com/zwh0910/p/14617981.html