Spring的三种实例化Bean的方式

Spring提供了三种实例化Bean的方式

1.使用类构造器实例化

<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"></bean>

2.使用静态工厂方法实例化

我们在编码剖析Spring管理Bean的原理案例的基础上使用这种方式来实例化bean。
首先我们要在cn.itcast.service.impl包中创建一个工厂类——PersonServiceBeanFactory.java,其代码如下:

public class PersonServiceBeanFactory {
    public static PersonServiceBean createPersonServiceBean() {
        return new PersonServiceBean();
    }
}

然后修改Spring的配置文件为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"></bean>
    <bean id="personService2" class=" cn.itcast.service.impl.PersonServiceBeanFactory"
          factory-method="createPersonServiceBean" />

</beans>

最后,将SpringTest类的改为:

public class SpringTest {

    @Test
    public void test() {
        // ApplicationContext是接口
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); // 实例化Spring容器
        PersonService personService = (PersonService) ctx.getBean("personService2"); // 从Spring容器取得bean
        personService.save();
    }

}

测试test()方法,Eclipse控制台打印如下: 
这里写图片描述

3.使用实例工厂方法实例化

我们同样在编码剖析Spring管理Bean的原理案例的基础上使用这种方式来实例化bean。
首先我们要修改工厂类——PersonServiceBeanFactory.java的代码为:

public class PersonServiceBeanFactory {
    public static PersonServiceBean createPersonServiceBean() {
        return new PersonServiceBean();
    }

    public PersonServiceBean createPersonServiceBean2() {
        return new PersonServiceBean();
    }
}

紧接着修改Spring的配置文件为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"></bean>
    <bean id="personService2" class=" cn.itcast.service.impl.PersonServiceBeanFactory"
          factory-method="createPersonServiceBean" />
    <bean id="personServiceBeanFactory" class="cn.itcast.service.impl.PersonServiceBeanFactory"></bean>
    <bean id="personService3" factory-bean="personServiceBeanFactory" factory-method="createPersonServiceBean2"></bean>
</beans>

最后,将SpringTest类的改为:

public class SpringTest {

    @Test
    public void test() {
        // ApplicationContext是接口
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); // 实例化Spring容器
        PersonService personService = (PersonService) ctx.getBean("personService3"); // 从Spring容器取得bean
        personService.save();
    }

}
  • 测试test()方法,Eclipse控制台打印如下: 
    这里写图片描述

Spring提供了三种实例化Bean的方式,那么到底该使用哪种方式较稳妥呢?应根据实际情况决定,但可这样说,90%的可能都是采用第一种方式,即使用类构造器实例化bean。

转载于:https://www.cnblogs.com/zbdouble/p/9227605.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值