快速业务通道

用FactoryBean让Spring配置动起来 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

用FactoryBean让Spring配置动起来

时间:2010-12-31

看到不少朋友讨论 spring 配置时认为 spring 配置中只能静态的设置一些参数(典型情况如数据库配置, 定时器配置等)导致不方便, 其实 spring 已经提供了非常便利的方式来实现动态配置, 我们要做的只是实现一个自己的 FactoryBean , 来看一下 FactoryBean 接口的定义

代码

/** * Interface to be implemented by objects used within a BeanFactory * that are themselves factories. If a bean implements this interface, * it is used as a factory, not directly as a bean. * * <p><b>NB: A bean that implements this interface cannot be used * as a normal bean.</b> A FactoryBean is defined in a bean style, * but the object exposed for bean references is always the object * that it creates. * * <p>FactoryBeans can support singletons and prototypes, and can * either create objects lazily on demand or eagerly on startup. * * <p>This interface is heavily used within the framework, for * example for the AOP ProxyFactoryBean or JndiObjectFactoryBean. * It can be used for application components, but this is not common * outside of infrastructure code. * * @author Rod Johnson * @author Juergen Hoeller * @since 08.03.2003 * @see org.springframework.beans.factory.BeanFactory * @see org.springframework.aop.framework.ProxyFactoryBean * @see org.springframework.jndi.JndiObjectFactoryBean */ public interface FactoryBean {   /**   * Return an instance (possibly shared or independent) of the object   * managed by this factory. As with a BeanFactory, this allows   * support for both the Singleton and Prototype design pattern.   * <p>If this method returns <code>null</code>, the factory will consider   * the FactoryBean as not fully initialized and throw a corresponding   * FactoryBeanNotInitializedException.   * @return an instance of the bean (should not be <code>null</code>;   * a <code>null</code> value will be considered as an indication of   * incomplete initialization)   * @throws Exception in case of creation errors   * @see FactoryBeanNotInitializedException   */   Object getObject() throws Exception;   /**   * Return the type of object that this FactoryBean creates, or <code>null</code>   * if not known in advance. This allows to check for specific types   * of beans without instantiating objects, for example on autowiring.   * <p>For a singleton, this should try to avoid singleton creation   * as far as possible; it should rather estimate the type in advance.   * For prototypes, returning a meaningful type here is advisable too.   * <p>This method can be called <i>before</i> this FactoryBean has   * been fully initialized. It must not rely on state created during   * initialization; of course, it can still use such state if available.   * <p><b>NOTE:</b> Autowiring will simply ignore FactoryBeans that return   * <code>null</code> here. Therefore it is highly recommende

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号