`
akunamotata
  • 浏览: 374467 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

工厂方法与FactoryBean

阅读更多

 

1. 静态工厂方法

    将静态工厂方法实现类的工厂方法调用结果作为bean注册到容器中

 

<bean id=" " class="…Factory" factory-method="getInstance" />

 
    为了包含方法参数的工厂方法能够预期返回相应的实现类实例,可以通过<constructor-arg>为工厂方法传入相应参数。


2. 非静态工厂方法

    针对基于工厂类实例的工厂方法调用结果作为bean注册到容器中

<bean id="factory" class="…Factory" />
<bean id=" " factory-bean="factory" factory-method="getInstance" />

 
    …Factory作为正常的bean注册到容器,使用factory-bean属性来制定工厂方法所在的工厂类实例,而不是通过class属性来指定工厂方法所在类的类型。指定工厂方法名则相同。


3. FactoryBean

    FactoryBean是Spring容器提供的一种可扩展容器对象实例化逻辑的接口,这种类型的Bean本身就是生产对象的工厂。当某些对象的实例化过程过于繁琐,通过XML配置过于复杂,除了使用java代码完成实例化过程,还可通过实现org.springframework.beans.factory.FactoryBean接口。
    org.springframework.beans.factory.FactoryBean定义了三个方法:

 public interface FactoryBean {
     Object getObject() throws Exception;
     Class getObjectType();
     Boolean isSingleton();
}

 
    getObject()方法返回该FactoryBean生产的对象实例,getObjectType()方法仅返回getObject()方法所返回的对象的类型。isSingleton()方法返回结果用于表明,getObject()对象是否以singleton形式存在于容器中。如果以singleton形式存在,返回ture,否则返回false。
   

<bean id=" " class="…FactoryBean" />

 

    使用该bean注入的对象类型是实现FactoryBean类getObjectType()方法返回的类对象的元类型。
    如果需要获取FactoryBean本身的对象,通过在bean定义的id之前加前缀&来达到目的。

分享到:
评论

相关推荐

    09-IoC配置-静态工厂与实例工厂创建bean

    Spring IOC 04 配置通过静态工厂方法创建的bean、实例工厂创建的bean、FactoryBean (1)bean的创建默认就是框架利用反射new出来的bean实例; (2)工厂模式:工厂帮我们创建对象,有一个专门帮我们创建对象的类,这...

    使用FactoryBean结合Jmock实现动态Mock类的注入

    FactoryBean:我们在使用Spring过程中一般都是使用基本的的配置,在Spring配置中,还有一种特殊的FactoryBean,这种bean,可以动态的帮我们创建我们需要的bean,如: ProxyFactoryBean,通用的用于获得AOP代理的工厂bean。...

    spring4示例代码

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

    FactoryBean.zip

    介绍工厂Bean,欢迎关注本人博客:https://blog.csdn.net/qq_40634846,里面有循序渐进的零基础入门spring,希望对大家有帮助哈哈

    掌握Spring设计模式:Java工程师必备指南

    工厂方法模式则通过FactoryBean接口展示,让对象创建更加灵活。单例模式保证了Bean实例的唯一性,而适配器模式和装饰器模式则提高了代码的可扩展性和可重用性。代理模式和观察者模式在Spring AOP和事件驱动模型中...

    spring学习资料

    3. //这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象, 4. //如果需要得到工厂本身,需要转义 5. String FACTORY_BEAN_PREFIX = "&"; 6. 7. //这里根据...

    spring源码解决

    //这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象, //如果需要得到工厂本身,需要转义 String FACTORY_BEAN_PREFIX = "&"; //这里根据bean的名字,在IOC容器中...

    singleton factory

    在这个程序中,在内部(非界面部分)用了3种设计模式:单体模式,工厂模式,门面模式.和vector容器,希望能对大家有点用

    尚硅谷佟刚Spring4代码及PPT.rar

    在 Eclipse 中安装 SpringIDE 插件、IOC & DI、在 Spring 中配置 Bean、自动装配、Bean 之间的关系(依赖、继承)、Bean 的作用域、使用外部属性文件、SpEL、管理 Bean 的生命周期、通过工厂方法配置 Bean、通过 ...

    FatoryDe​​sign-Springboot-Batch1

    (服务实现ShapeService) 一旦受到限制,请创建另一个用于工厂设计的界面并创建一个方法。 (ShapeFactory.java接口) 配置FactoryBean @Bean public FactoryBean &lt;?&gt; factoryBean(){最终...

    Spring 3 Reference中文

    4.3.2.2 使用静态工厂方法来实例化.. 36 4.3.2.3 使用实例工厂方法来实例化.. 37 4.4 依赖 38 4.4.1 依赖注入. 38 4.4.1.1 基于构造方法的依赖注入 39 4.4.1.2 基于setter 方法的依赖注入...

    积分管理系统java源码-knowledge:这是我的知识,包括我所有已知的

    FactoryBean和BeanFactory Spring事务处理机制 Spring JDBC Spring MVC九大组件 手动实现Spring MVC Spring5新特性 Mybatis 代码自动生成器 mybatis关联查询和嵌套查询 缓存使用场景及选择策略 Spring集成下的...

    Spring面试题

    类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4. 说下Hibernate的缓存...

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

    4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 自动装配 4.5 方法...

    Spring3.x企业应用开发实战(完整版) part1

    4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 自动装配 4.5 方法...

    Java EE设计模式:Spring企业级开发最佳实践

    在 Spring 中,BeanFactory 是一个工厂接口,提供了获取 Bean 实例的方式,开发者可以通过实现 FactoryBean 接口来定制Bean的创建过程。 3.Observer Pattern:观察者模式,定义对象之间的一种一对多的依赖关系,一...

    Spring攻略(第二版 中文高清版).part2

    2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 解决方案 59 2.2.3 工作原理 59 2.3 从静态字段中声明Bean 60 2.3.1 问题 60 2.3.2 解决方案 60 2.3.3 工作原理 61 2.4 从对象属性中...

    Spring攻略(第二版 中文高清版).part1

    2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 解决方案 59 2.2.3 工作原理 59 2.3 从静态字段中声明Bean 60 2.3.1 问题 60 2.3.2 解决方案 60 2.3.3 工作原理 61 2.4 从对象属性中...

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

    3.7.3. 使用FactoryBean定制实例化逻辑 3.8. ApplicationContext 3.8.1. 利用MessageSource实现国际化 3.8.2. 事件 3.8.3. 底层资源的访问 3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的...

Global site tag (gtag.js) - Google Analytics