Spring实例化Bean的三种方式
2020-09-25 本文已影响0人
落雪无尘V
第一种方式:
使用默认无参构造函数
<!--在默认情况下:它会根据默认无参构造函数来创建类对象。如果bean中没有默认无参构造函数,将会创建失败。-->
<bean id="accountService" class="com.lxwc.service.impl.AccountServiceImpl"/>
第二种方式:
spring管理静态工厂-使用静态工厂的方法创建对象
/*** 模拟一个静态工厂,创建业务层实现类*/
public class StaticFactory {
public static IAccountService createAccountService(){
return new AccountServiceImpl();
}}
<!--此种方式是:使用StaticFactory类中的静态方法createAccountService创建对象,
并存入spring容器id属性:指定bean的id,用于从容器中获取class属性:
指定静态工厂的全限定类名factory-method属性:指定生产对象的静态方法-->
<bean id="accountService" class="com.lxwc.factory.StaticFactory" factory-method="createAccountService"></bean>
第三种方式:
spring管理实例工厂-使用实例工厂的方法创建对象
/*** 模拟一个实例工厂,创建业务层实现类* 此工厂创建对象,必须现有工厂实例对象,再调用方法 */
public class InstanceFactory {
public IAccountService createAccountService(){
return new AccountServiceImpl();
}}
<!--此种方式是:先把工厂的创建交给spring来管理。
然后在使用工厂的bean来调用里面的方法factory-bean属性:
用于指定实例工厂bean的id。factory-method属性:用于指定实例工厂中创建对象的方法。-->
<bean id="instancFactory" class="com.lxwc.factory.InstanceFactory"></bean>
<bean id="accountService" factory-bean="instancFactory" factory-method="createAccountService"></bean>