`
ayumi11111
  • 浏览: 23883 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring中FactoryBean的应用

 
阅读更多

FactoryBean接口定义了以下3个接口方法:

   Object getObject():返回有FactoryBean创建的Bean实例,如果isSingleton()返回true,则该实例会放到Spring容器的单实例缓存池中。

    boolean isSingleton():确定由FactoryBean创建Bean的作用域是singleton还是prototype.

   Class getObjectType():返回FactoryBean创建Bean的类型。

当配置文件中 <bean>的class属性配置的实现类是FactoryBean时,通过getBean方法返回的不是FactoryBean本身,而是 FactoryBean#getObject()方法所返回的对象,相当于FactoryBean#getObject()代理了getBean()方 法。

    我们在配置Car时,Car的每个属性分别对应一个<property>元素标签。假设我们嫌这种方式不苟简洁,而希望通过逗号分隔的方式一次性的为Car的所有属性制定配置值,那么我们可以通过编写一个FactroyBean来达到目的:

    import org.springframework.beans.factory.FactoryBean;

    public class CarFactoryBean implements FactoryBean{

       private String carInfo;

       public Stirng getCarInfo(){

         return carInfo;

   }

      public void setCarInfo(String carInfo){

       this.carInfo=carInfo;

}

     public Object getObject()throws Exception{

        Car car=new Car();

        String[]infos = carInfo.split(",");

         car.setBrand(infos[0]);

        car.setMaxSpeed(Integer.aarseInt(infos[1]));

        car.setPrice(Double.parseDouble(infos[2]));

        return car;

}

     public Class getObjectType(){

     return Car.class;

}

    public boolean isSingleton() {

     return true;

   }

}

有了这个CarFactoryBean后,我们就可以在配置文件中使用以下的配置方式定义Car Bean了:

      <bean id="car" class="com.lxm.fb.carFactoryBean">

          <property name="carInfo" value="红旗CA72,200,20000.00"/>

</bean>

当调用getBean("car")时,Spring通过反射机制发现CarFactoryBean实现了FactoryBean的接口,这时 Sping容器就调用接口方法CarFactoryBean#getObject()返回工厂类创建的对象。如果用户希望获取 CarFactoryBean的实例,则需要在使用getBean(beanName)方法时显式地在beanName前加上“&”前 缀:getBean("&cr").

 

转自:http://hi.baidu.com/victorlin23/blog/item/0e75802ed419a25e4fc226b0.html

 

分享到:
评论

相关推荐

    spring中FactoryBean中的getObject()方法实例解析

    Spring 中 FactoryBean 中的 getObject() 方法实例解析 Spring 框架中 FactoryBean 是一个非常重要的概念,它提供了一种创建和管理 Bean 的机制。在 Spring 中,FactoryBean 是一个特殊的 Bean,它可以创建其他 ...

    Spring中的FactoryBean.rar

    在实际应用中,FactoryBean的使用需要注意以下几点: - 调用`getBean(String beanName)`时,如果beanName对应的bean是一个FactoryBean,Spring会返回FactoryBean创建的对象,而不是FactoryBean本身。 - 如果需要获取...

    详解Spring中的FactoryBean

    在Spring框架中,`FactoryBean`是一个非常重要的接口,它为Spring容器提供了更高级别的抽象,使得我们可以自定义Bean的创建过程。...理解并熟练运用`FactoryBean`,对于提升Spring应用的可扩展性和灵活性具有重要意义。

    简单了解Spring中BeanFactory与FactoryBean的区别

    在实际应用中,我们通常使用BeanFactory来管理Bean的生命周期,而使用FactoryBean来生成其他Bean的实例。例如,在Spring MVC中,我们可以使用BeanFactory来管理Controller Bean的生命周期,而使用FactoryBean来生成...

    spring源码解析之FactoryBean相关测试代码demo

    本篇将通过一个测试代码示例来深入解析`FactoryBean`的工作原理及其在Spring配置中的应用。 首先,我们需要了解`FactoryBean`的基本概念。`FactoryBean`是Spring提供的一种扩展点,它是一个工厂,可以用来创建对象...

    深入了解Spring中的FactoryBean

    五、FactoryBean在Spring中的应用 在Spring框架中,FactoryBean可以用来创建和管理对象实例。例如,在上面的示例代码中,我们使用FactoryBean来创建和管理Cloth对象实例。 FactoryBean可以用来创建和管理复杂的对象...

    FactoryBean代码最简实现

    在Spring框架中,`FactoryBean`是一个非常重要...理解并熟练运用`FactoryBean`,能显著提升你在Spring应用开发中的灵活性和掌控力。通过阅读提供的`factorybean`资源,你可以进一步深入研究`FactoryBean`的使用和实践。

    Spring中BeanFactory与FactoryBean接口的区别详解

    在Spring框架中,BeanFactory和FactoryBean是两个重要的接口,它们各自扮演着不同的角色,但都与Spring容器的管理和创建对象密切相关。 **BeanFactory接口**是Spring容器的基础,它是整个Spring IoC(Inversion of ...

    spring6pdf详细讲解

    在 Spring 中, Bean 是应用程序的核心组件,它们可以是任何 Java 对象。 Spring 提供了多种方式来实例化和管理 Bean,包括通过构造方法、简单工厂模式、FactoryBean 等。 Spring 还提供了多种范围的 Bean,包括 ...

    spring如何通过FactoryBean配置Bean

    在 Spring 框架中,FactoryBean 是一种特殊的 Bean,它可以实现复杂的 Bean 实例化逻辑。通过 FactoryBean,我们可以将复杂的实例化逻辑封装起来,使得 Bean 的配置更加灵活和灵活。 在本文中,我们将通过一个示例...

    SSH笔记-通过实现FactoryBean接口来创建 Bean

    本笔记将详细探讨如何通过实现`FactoryBean`接口来创建Bean,以及在Spring4中如何应用这一特性。 `FactoryBean`是Spring提供的一个接口,它提供了一种方式,让我们能够控制对象的创建过程。当你在Spring配置文件中...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    Spring BeanFactory和FactoryBean区别解析

    Spring框架中,BeanFactory和FactoryBean是两个非常重要的概念,它们都是Spring IoC容器的核心组件。今天,我们将深入探讨这两个概念之间的区别和联系。 首先,让我们从BeanFactory开始。BeanFactory是IoC容器的...

    mybatis-spring-1.3.3.jar官方下载

    MyBatis-Spring 是一个将 MyBatis ORM 框架与 Spring 框架集成的库,使得在 Spring 应用中使用 MyBatis 变得更加方便。mybatis-spring-1.3.3.jar 文件是这个集成库的一个版本,提供了对 MyBatis 1.3.3 和 Spring 的...

    68-BeanFactory与FactoryBean1

    Spring 中的 BeanFactory 和 FactoryBean BeanFactory 是 Spring 框架中的核心组件之一,负责管理 Bean 的生命周期,包括实例化、配置和注入对象之间的关系。它是 Spring IOC(控制反转)容器的核心组件,提供了...

    Spring.3.x企业应用开发实战(完整版).part2

    13.6 实际应用中的任务调度 13.6.1 如何产生任务 13.6.2 任务调度对应用程序集群的影响 13.6.3 任务调度云 13.6.4 Web应用程序中调度器的启动和关闭问题 13.7 小结 第14章 使用OXM进行对象XML映射 14.1 认识XML解析...

    mybatis-spring-1.0.1-bundle.zip

    MyBatis-Spring 是一个轻量级的框架,它将 MyBatis 和 Spring 进行了无缝集成,使得在 Spring 应用中使用 MyBatis 变得更加简单。这个名为 "mybatis-spring-1.0.1-bundle.zip" 的压缩包,包含的是 MyBatis-Spring 的...

    FactoryBean.zip

    总的来说,`FactoryBean`是Spring框架中一个强大的工具,它扩展了Spring容器的能力,使得我们可以自定义对象的创建方式,更好地满足了复杂应用的需求。通过"FactoryBean.zip"中的示例,我们可以深入学习这一特性,...

    mybatis,mybatis-spring

    而MyBatis-Spring则是MyBatis与Spring框架的桥梁,它使得在Spring应用中使用MyBatis变得更加方便。 1. **MyBatis简介** MyBatis提供了SQL语句和Java代码之间的映射,通过XML或注解方式配置和原始映射,将接口和...

Global site tag (gtag.js) - Google Analytics