欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring实例化bean的三种方式

程序员文章站 2022-05-23 15:54:17
...

概述

构造器实例化bean:最常用,通过调用bean的无参构造方法实例化bean。当然也可以使用有参构造函数实例化bean

静态工厂方法实例化bean:通过调用工厂类的静态方法实例化bean

实例化工厂方法实例化bean:与静态工厂的区别是实例化bean的方法非静态,需要先将工厂类实例化,再调用非静态的实例化方法示例bean

 

构造器实例化bean

<!-- 默认的无参构造函数,不需要配置其它属性 -->

<bean id="baseDao" class="cn.mytest.service.impl.PersonDAO"></bean>

<!-- 有参构造函数 -->

<bean id="personService" class="cn.mytest.service.impl.PersonServiceBean">
    <constructor-arg ref="baseDao"/>
</bean>

静态工厂方法实例化bean

顾名思义这种方式就像一个工厂可以自己生成bean。首先我们创建一个工厂类:

public class PersonServiceFactory {  
    //创建静态工厂方法  
    public static PersonServiceBean createPersonServiceBean(){  
         //返回实例化的对象  
        return new PersonServiceBean();  
    }  
} 

接下来就是配置xml:

<bean id="personService1" class="cn.mytest.service.impl.PersonServiceFactory" 
factory-method="createPersonServiceBean"></bean>

id是实例化的对象的名称,class是工厂类,也就实现实例化类的静态方法所属的类,factory-method是实现实例化类的静态方法。

实例化工厂方法实例化bean

与静态工厂方法实例化bean不同的是,工厂类中实例化bean的方法不是静态的。还是先创建工厂类:

public class PersonServiceFactory {  
    //创建bean的工厂方法  
    public PersonServiceBean createPersonService(){  
         //返回实例化的对象  
        return new PersonServiceBean();  
    }  
} 

此时的配置文件相比上面的要复杂一点:

<!-- 首先需要实例化工厂 -->
<bean id="personServiceFactory" class="cn.mytest.service.impl.PersonServiceFactory"></bean>  

<!-- 再实例化需要的bean -->
<bean id="personService" factory-bean="personServiceFactory" factory-method="createPersonService"></bean>