spring自定义FactoryBean
来源:互联网 发布:mac live photo 编辑 编辑:程序博客网 时间:2024/05/16 15:27
FactoryBean是spring容器提供的一种可以扩展容器对象实例化的逻辑接口,一定不要与BeanFactory搞混淆,BeanFactory是一个创建对象的工厂,主语是Factory,而FactoryBean主语是Bean,只是一个bean而已。
如何自定义bean呢?分以下几个步骤
1 实现FactoryBean接口.该接口有三个抽象方法
public Object getObject() throws Exception 用于返回产生的对象
public Class getObjectType() 返回产生对象的类型
public boolean isSingleton() 所要生产的对象是singleton形式存在容器中。
package com.sxt.domain;import java.util.*;import org.springframework.beans.factory.FactoryBean;public class NextDayDateFactoryBean implements FactoryBean {public Object getObject() throws Exception { return new Date();}public Class getObjectType() { return Date.class;}public boolean isSingleton() { return true;}}
package com.sxt.domain;import java.util.*;public class Bean {private String name;private Date date;public Bean( ) { }public Bean(String name) { this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}}
2 配置xml文件
<bean id="nextDayDateFactoryBean" class="com.sxt.domain.NextDayDateFactoryBean" > </bean> <bean id="bean" class="com.sxt.domain.Bean" > <property name="date" ref="nextDayDateFactoryBean"></property> </bean>
会发现在以上Bean类中 date属性是一个Date类型,但是所引用的nextDayDateFactoryBean却是一 个com.sxt.domain.NextDayDateFactoryBean类型,这说明通过id引用返回的并不是一个自身的类型,而是FactoryBean所产生对象的类型,就是getObjectType方法产生的类型
3 测试
Bean bean=(Bean)factory.getBean("bean");System.out.println(bean.getDate());打印出:Mon Aug 04 13:22:00 GMT 2014
Date date=(Date)factory.getBean("nextDayDateFactoryBean");以上打印出:Mon Aug 04 13:22:00 GMT 2014
咦,通过这个id返回的是Date类型的对象,也就是getObject所产生的对象,那么我们如何来求的本身的对象呢,
这时我们可以通过添加&前缀来获取NextDayDateFactoryBean类型的对象
NextDayDateFactoryBean nextDayDateFactoryBean=(NextDayDateFactoryBean)factory.getBean("&nextDayDateFactoryBean"); System.out.println(nextDayDateFactoryBean.getObject().getClass());这时才打印出 class java.util.Date
spring很多地方使用了FactoryBean,如
SqlMapClientFactoryBean
TransactionProxyFactoryBean
是不是有点眼熟呢,对,在集成持久层框架就用到了它们。
0 0
- spring自定义FactoryBean
- Spring FactoryBean
- Spring FactoryBean
- spring FactoryBean
- spring factoryBean
- spring-FactoryBean
- Spring--FactoryBean
- Spring FactoryBean
- spring详解:通过FactoryBean自定义工厂初始化Bean
- 获得spring中的FactoryBean
- Spring FactoryBean源码浅析
- spring的FactoryBean<T>
- Spring之FactoryBean
- Spring中的FactoryBean
- Spring中的FactoryBean
- Spring中的FactoryBean
- Spring FactoryBean源码浅析
- Spring中的FactoryBean
- junit 测试中各种断言用法
- poj 1651 Multiplication Puzzle dp
- unix网络编程卷1 时间获取客户端程序
- hdu 1086 You can Solve a Geometry Problem too(线段相交的交点个数)
- HDU-2032-直角杨辉三角
- spring自定义FactoryBean
- HDU-#2544 最短路(Dijkstra、Floyd、Bellman-Ford、SPFA)
- UI----UIslider 和UIcontrol的属性
- 计算机体系结构的铁律(iron law)
- 比较两表数据
- 关于异或加密算法的小游戏
- 黑马程序员-面向对象总结(1)
- Android假短信(发送短信到手机系统)
- 6 Maintaining Client State