读书人

spring学习-工场Bean

发布时间: 2012-09-09 09:27:54 作者: rapoo

spring学习----工厂Bean

?

当我们需要用到工厂模式的时候,也可以交给Spring容器管理,此时Spring容器管理的就不是普通Bean,可称为“工厂Bean”。此时,应用程序调用getBean()是,Spring返回的不是直接创建的Bean,而是“工厂Bean”创建的Bean。如下图所示:


spring学习-工场Bean

?

那Spring怎么配置工厂Bean,方法如下:

一,使用静态工厂

?

?

?

?

?

?

调用getBean("emptyObject")便会调用StaticFactoryBean的createEmptyObject()方法,返回一个Object对象

?

?

?

二,使用实例工厂

?

?

?

?

?

第一个Bean指定实例工厂,第二个Bean指定实例工厂名称和方法名。调用getBean("currentTime")即会调用InstanceFactoryBean的createTime方法

?

?

三,实现FactoryBean接口

FactoryBean源代码如下:

?

?

?

实现FactoryBean接口的对象,本身就是工厂类。如果一个bean实现了这个接口,它是用来作为对象创建的工厂,而不是直接将本身作为一个bean实例。

注:实现该接口的bean不能被用来作为一个普通的bean。一个FactoryBean定义bean的风格,但返回bean引用的对象getObject(),始终是它创建的对象。

FactoryBean可以支持单例和原型,延迟或启动创建对象。SmartFactoryBean接口允许更细粒度的控制。

在框架中有很多实现了此接口,例如为AOP:org.springframework.aop.framework.ProxyFactoryBean或org.springframework.jndi.JndiObjectFactoryBean。

?

?

?

读书人网 >编程

热点推荐