使用FactoryBean接口简化工厂Bean开发
2007-04-06 10:03
543 查看
使用FactoryBean接口简化工厂Bean开发,但是,一个工厂只能有一类产品
public class PersonFactory implements FactoryBean
...{
Person p = null;
//返回产品
public Object getObject() throws Exception
...{
if (p == null)
...{
p = new Chinese();
}
return p;
}
//返回产品类型
public Class getObjectType()
...{
return Chinese.class;
}
//产生的实例是否为单态
public boolean isSingleton()
...{
return true;
}
}
配置文件:
<beans>
<bean id="beanfactory" class="Bean.Beanfactory.PersonFactory">
</bean>
</beans>
这样,根据beanfactory获得的bean不再是PersonFactory,而是其产品Chinese,如果需要得到PersonFactory实例,有另外一种调用方式,如下:
public static void main(String[] args) throws Exception ...{
String path=new Test().getClass().getResource("/").getPath();
String realpath=path.substring(1, path.length());
ApplicationContext context=new FileSystemXmlApplicationContext(realpath+"/beanfactory.xml");
Chinese p=(Chinese)context.getBean("beanfactory");
System.out.println(context.getBean("&beanfactory"));
System.out.println(p);
}
其中System.out.println(context.getBean("&beanfactory"));返回工厂的实例
运行结果:
Bean.Beanfactory.PersonFactory@ca470
Bean.Beanfactory.Chinese@1ffc686
public class PersonFactory implements FactoryBean
...{
Person p = null;
//返回产品
public Object getObject() throws Exception
...{
if (p == null)
...{
p = new Chinese();
}
return p;
}
//返回产品类型
public Class getObjectType()
...{
return Chinese.class;
}
//产生的实例是否为单态
public boolean isSingleton()
...{
return true;
}
}
配置文件:
<beans>
<bean id="beanfactory" class="Bean.Beanfactory.PersonFactory">
</bean>
</beans>
这样,根据beanfactory获得的bean不再是PersonFactory,而是其产品Chinese,如果需要得到PersonFactory实例,有另外一种调用方式,如下:
public static void main(String[] args) throws Exception ...{
String path=new Test().getClass().getResource("/").getPath();
String realpath=path.substring(1, path.length());
ApplicationContext context=new FileSystemXmlApplicationContext(realpath+"/beanfactory.xml");
Chinese p=(Chinese)context.getBean("beanfactory");
System.out.println(context.getBean("&beanfactory"));
System.out.println(p);
}
其中System.out.println(context.getBean("&beanfactory"));返回工厂的实例
运行结果:
Bean.Beanfactory.PersonFactory@ca470
Bean.Beanfactory.Chinese@1ffc686
相关文章推荐
- 使用FactoryBean接口简化工厂Bean开发
- 使用JSR303和AOP简化接口开发
- 使用FactoryBean接口实现自定义bean初始化
- 简述如何使用动态FormBean简化开发Struts
- 使用TransactionProxyFactoryBean及abstract属性来简化配置 【声明式事务配置方法】
- MVC扩展控制器工厂,通过继承DefaultControllerFactory来决定使用哪个接口实现,使用Ninject
- Spring FactoryBean接口使用
- QuickCSharp框架开发(14)------定义AuthenticationFactory验证工厂对象、获得AuthenticationProviderFactory验证提供者工厂实例返回的接口
- Spring学习笔记 关于FactoryBean接口的使用
- 使用FactoryBean接口实现自定义bean初始化
- Spring(2)与接口配合使用和获取Bean容器的两种方式(BeanFactory 、ApplicationContext)
- 使用JSR 303和AOP简化你的接口开发
- 使用NSOperationQueue简化多线程开发
- Spring BeanFactory中的接口体系
- 使用百度地图接口实现自定义网页地图开发实现
- 容器扩展点3 使用FactoryBean自定义初始化逻辑
- 使用thrift快速开发接口工具
- spring 容器后处理器 BeanFactoryPostProcessor 使用需要注意的一个问题
- 使用EJB3.O简化EJB开发(三)
- Spring定时任务的实现方式--ScheduledExecutorService and ScheduledExecutorFactoryBean的简单源码解析以及使用