`
fjg0427
  • 浏览: 40484 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

spring factorybean

 
阅读更多

1.概述  
         Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean,这两种Bean都被容器管理,但工厂 Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该FactoryBean的getObject方法所返回的对象。在 Spring框架内部,有很多地方有FactoryBean的实现类,它们在很多应用如(Spring的AOP、ORM、事务管理)及与其它第三框架 (ehCache)集成时都有体现,下面简单分析FactoryBean的用法。 

2.实例  
以下SimpleFactoryBean类实现了FactoryBean接口中的三个方法。 并将该类配置在XML中。 

Java代码  收藏代码
  1. public  class  SimpleFactoryBean implements  FactoryBean {  
  2.         private  boolean  flag;  
  3.       
  4.         public  Object getObject() throws  Exception {  
  5.             if  (flag) {  
  6.                 return  new  Date();  
  7.             }  
  8.             return  new  String("false");  
  9.         }  
  10.       
  11.         @SuppressWarnings ("unchecked")  
  12.         public  Class getObjectType() {  
  13.             return  flag ? Date.class  : String.class ;  
  14.         }  
  15.       
  16.         public  boolean  isSingleton() {  
  17.             return  false ;  
  18.         }  
  19.       
  20.         public  void  setFlag(boolean  flag) {  
  21.             this .flag = flag;  
  22.         }  
  23.     }  
  24.       
  25.     <bean id="factoryBeanOne" class ="com.study.demo.factorybean.SimpleFactoryBean" >  
  26.         <property name="flag">  
  27.             <value>true </value>  
  28.         </property>  
  29.     </bean>  
  30.       
  31.     <bean id="factoryBeanTwo" class ="com.study.demo.factorybean.SimpleFactoryBean" >  
  32.         <property name="flag">  
  33.             <value>false </value>  
  34.         </property>  
  35.     </bean>  
  36.       
  37.     public  class  MainTest {  
  38.         public  static  void  main(String[] args) {  
  39.             Resource res = new  ClassPathResource("bean.xml");  
  40.             BeanFactory factory = new  XmlBeanFactory(res);  
  41.             System.out.println(factory.getBean("factoryBeanOne").getClass());  
  42.             System.out.println(factory.getBean("factoryBeanTwo").getClass());  
  43.         }  
  44.     }  



通过简单的测试可知,该类输出如下: 
class java.util.Date 
class java.lang.String 
也就是说,容器通过getBean方法返回的不是FactoryBean本身,而是FactoryBean实现类中getObject()方法所返回的对象。

分享到:
评论

相关推荐

    spring的FactoryBean增强我们的目标对象.rar

    通过FactoryBean在获取目标类的时间我们将增强的代理类给返回,使得我们调用方法的时间使用的代理类来增强,如果需要继续使用未代理的对象,则直接@Autowired 注入使用.

    SpringFactoryBean:spring FactoryBean的样本,在运行时在两个bean之间进行更改

    spring FactoryBean的小样本,如何在运行时在两个bean之间进行切换。

    详解Spring中的FactoryBean

    本篇文章主要介绍了Spring中的FactoryBean,如果一个bean的创建过程中涉及到很多其他的bean 和复杂的逻辑,用xml配置比较困难,这时可以考虑用FactoryBean

    spring中的FactoryBean代码示例

    主要介绍了spring中的FactoryBean代码示例,涉及FactoryBean的实现等相关内容,具有一定参考价值,需要的朋友可以了解下。

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

    主要介绍了spring中FactoryBean中的getObject()方法实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

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

    spring源码解析之FactoryBean相关测试代码demo,文章中也有相关代码

    Spring中的FactoryBean.rar

    Spring中的FactoryBean.rar

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

    主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    spring:这是Spring框架研究

    spring This is spring framework study ...八、使用spring FactoryBean技术模拟mybatis MapperScan注解 https://github.com/AvengerEug/spring/tree/develop/implement-mapperscan 九、mybatis源码学习 ...

    Spring基于ProxyFactoryBean创建AOP代理

    主要介绍了Spring基于ProxyFactoryBean创建AOP代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    FactoryBean代码最简实现

    这篇代码主要适用于我的博客,用来帮助理解Spring配置文件+FactoryBean的实例化过程。注意,这里是FactoryBean,而不是BeanFactory,下载资源要看清楚哈。

    深入了解Spring中的FactoryBean

    主要介绍了深入了解Spring中的FactoryBean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

    主要给大家介绍了关于Spring中BeanFactory与FactoryBean接口的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    spring如何通过FactoryBean配置Bean

    主要介绍了spring如何通过FactoryBean配置Bean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Spring BeanFactory和FactoryBean区别解析

    主要介绍了Spring BeanFactory和FactoryBean区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    spring4示例代码

    spring-2 演示了外部配置文件的引入(connection),spel(spring el)表达式 ,静态工厂方式及实例工厂方式及factorybean方式创建bean, spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用...

    spring的详细介绍

    Spring介绍 1. Spring 2. 使用spring的主要目的 3. Spring的模块 Ejb容器(以前是) Ioc容器(现在的控制权) 控制反转Ioc(Invertion of control)依赖注入(Dependency Injection) ...13. 接口FactoryBean的使用

    精通Spring整合MyBatis:架构师的实践指南

    Spring和MyBatis的整合是Java...Spring使用FactoryBean来创建特定类型的bean,例如MyBatis的Mapper接口的动态代理实例。BeanDefinitionRegistry则用于注册这些动态生成的bean,确保它们可以被Spring容器识别和管理。

    factory-bean-demo.7z

    spring 自定义 FactoryBean 样例工程,可以通过这个工程通过实现FactoryBean来扩展Spring容器

    高级开发spring面试题和答案.pdf

    BeanFactory和FactoryBean有什么区别; Spring中用到的设计模式; SPI 机制(Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制), 很多地方有用到: AOP Spring的AOP的底层实现原理; ...

Global site tag (gtag.js) - Google Analytics