WEB开发网
开发学院WEB开发Jsp 用FactoryBean让Spring配置动起来 阅读

用FactoryBean让Spring配置动起来

 2008-01-05 08:31:33 来源:WEB开发网   
核心提示:看到不少朋友讨论 sPRing 配置时认为 spring 配置中只能静态的设置一些参数(典型情况如数据库配置, 定时器配置等)导致不方便, 其实 spring 已经提供了非常便利的方式来实现动态配置, 我们要做的只是实现一个自己的 FactoryBean , 来看一下 FactoryBean 接口的定义 代码/***

  看到不少朋友讨论 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>

Tags:FactoryBean Spring 配置

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接