java bean 的应用_关于Spring中JavaBean的应用

本文介绍了Spring框架中FactoryBean的概念和用法。FactoryBean不同于普通Bean,它返回的对象是由getObject方法决定的,可以在AOP和事务处理中发挥作用。通过示例展示了如何创建和配置FactoryBean,以及如何通过在bean名称前添加'&'来获取FactoryBean实例。FactoryBean的巧妙使用可以为应用程序带来更多的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring中JavaBean的应用Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean。工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的getObject方法所返回的对象。在Spring框架内部,AOP相关的功能及事务处理中,很多地方使用到工厂Bean,本文简单分析工厂Bean的用法。

首先回顾一下普通Bean,普通的Bean直接返回指定类(配置中的class属性的值)的一个实例,如下面的bean1将返回一个String字符串:

下面,看看一个简单的工厂Bean:

import java.util.Date;

import org.springframework.beans.factory.FactoryBean;

public class FactoryBeanDemo implements FactoryBean {

private String name;

public void setName(String name)

{

this.name=name;

}

public Object getObject() throws Exception {

if("date".equals(name))return new Date();

else return new String("这是一个字符串!");

}

public Class getObjectType() {

return "date".equals(name)?Date.class:String.class;

}

public boolean isSingleton() {

return false;

}

}

下面看这个工厂Bean的配置:

下面是测试代码:

Resource res=new ClassPathResource("springroad/deomo/chap4/demo-bean.xml");

BeanFactory factory=new XmlBeanFactory(res);

System.out.println(factory.getBean("myFactoryBean").getClass());

System.out.println(factory.getBean("myFactoryBean1").getClass());

输出结果:

class java.lang.String

class java.util.Date

由此可见,通过使用FactoryBean,我们可以得到不同类型的对象实例。这也就是我们在AOP中通过设置calss为ProxyFactoryBean可以返回不同类型的业务对象的原理。在实际应用中若能灵活使用FactoryBean,则可以给应用程序增加很多的魔幻功能。一个小窍门:

FactoryBean还藏有一个技巧,也就是在我们实际需要返回FactoryBean实例时,应该怎么办。也就是我们在应用程序中需要通过容器得到一个FactoryBean。此时,需要使用特殊的方式,即在bean的名称前加上一个特殊符号“&”即可。

如,下面的代码:

System.out.println(factory.getBean("&myFactoryBean").getClass());

System.out.println(factory.getBean("&myFactoryBean1").getClass());

输出的结果将会是:

class springroad.deomo.chap4.FactoryBeanDemo

class springroad.deomo.chap4.FactoryBeanDemo由于本人水平有限,文中不足之处欢迎广大Spring爱好者不吝指教!

posted on 2006-08-12 01:28 冰川 阅读(1871) 评论(0)  编辑  收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值