http://blog.csdn.net/yerenyuan_pku/article/details/52832793

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

  • 使用类构造器实例化。

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

    不难看出,我们以前使用的就是该方式。上面的配置默认使用的是PersonServiceBean类的默认构造函数来实例化PersonServiceBean对象的。

  • 使用静态工厂方法实例化。 
    我们在编码剖析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控制台打印如下: 

  • 使用实例工厂方法实例化。 
    我们同样在编码剖析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。源码可点击Spring的三种实例化Bean的方式进行下载。

 
 

(转)Spring的三种实例化Bean的方式的更多相关文章

  1. Spring第四弹—–Spring的三种实例化bean的方式

    1.使用类构造器实例化   1 <bean id=“orderService" class="cn.itcast.OrderServiceBean"/> 2. ...

  2. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

  3. Spring中四种实例化bean的方式

    本文主要介绍四种实例化bean的方式(注入方式) 或者叫依赖对象实例化的四种方式.上面的程序,创建bean 对象,用的是什么方法 ,用的是构造函数的方式 (Spring 可以在构造函数私有化的情况下把 ...

  4. spring三种实例化bean的方式

    1构造函数实例化 2静态工厂方法实例化 3实例工厂方法实例化 service接口: package service; public interface PersonService { public v ...

  5. 三种实例化bean的方式

    在spring中有三中实例化bean的方式: 一.使用构造器实例化:(90%通常使用的一个方法) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化. 每种实例化所采用的配置是不一样的: 一. ...

  6. Spring三种实例化Bean的方法

    1.实例化bean的三种方法:(1) 构造器<!-- 体验1 --><bean id="personService" class="com.persia ...

  7. Spring(三)实例化Bean以及注入对象

    使用xml实例化bean 在xml中实例化bean的三种方式 <bean id="springService" class="com.zhiyou100.crm.t ...

  8. Spring的几种注入bean的方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式).   使用属性的se ...

  9. Spring框架几种创建bean的方式

    Spring框架下,Bean的创建和装配非常的灵活,提供了三种主要的方式,并且相互见可以互相看见,也就是你可以随意地采用你喜欢且合适的方式创建Bean,而不用担心他们之间的兼容问题. 一.使用XML显 ...

随机推荐

  1. 【NOIP2016】 组合数问题

    [题目链接] 点击打开链接 [算法] 杨辉三角 + 二维前缀和 O(1)计算答案 [代码] #include<bits/stdc++.h> using namespace std; #de ...

  2. JAVA线程同步 (三)信号量

    一个信号量有且仅有3种操作,且它们全部是原子的:初始化.增加和减少 增加可以为一个进程解除阻塞: 减少可以让一个进程进入阻塞. 信号量维护一个许可集,若有必要,会在获得许可之前阻塞每一个线程:     ...

  3. Java 8中Collection转为Map的方法

    Java 8中java.util.stream.Collectors提供了几个方法可用于把Collection转为Map结构,本文记录了个人对其中三个的理解. Method Return Type g ...

  4. linux 问题一 apt-get install 被 lock

    问题: sudo apt-get install vim E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporari ...

  5. JAVA多线程(一) Thread & Runnable

    githut代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service/ ...

  6. 如何使用go打出hell word

    今天给大家带来一篇如何使用go打出hell word(手动滑稽) 关于go介绍的话,我就不多说了,在百度上一搜一大堆, 要使用的软件Visual Studio Code(VScode) 下载go的地址 ...

  7. keepalived+nginx高可用实现

    1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能 ...

  8. Android课程设计第二天界面排版

    注意:课程设计只为完成任务,不做细节描述~ 老师叫我们做一个这个样子,然后.. <?xml version="1.0" encoding="utf-8"? ...

  9. 转 RAC HA 高可用性

    http://www.cnblogs.com/mfrbuaa/p/4089846.html

  10. 让jquery.tmpl支持序号${index}

    参考 http://blog.csdn.net/wangji5850/article/details/50913121 压缩的查找第一个map,添加 jQuery.map( h, function( ...