Spring框架之IoC容器—ConfigurableBeanFactory接口

来源:互联网 发布:人力资源软件 免费 编辑:程序博客网 时间:2024/05/16 08:32

一、ConfigurableBeanFactory简介

ConfigurableBeanFactory继承HierarchicalBeanFactory接口。
ConfigurableBeanFactory接口扩展了BeanFactory功能,几乎所有的Bean工厂都会实现这个接口。
ConfigurableBeanFactory接口不推荐在常见的应用代码中使用(还是推荐使用BeanFactory和ListableBeanFactory),主要用于框架内部使用以及对Bean工厂的配置进行特殊访问

二、ConfigurableBeanFactory源码详解

public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {    /**     * Bean作用域的“单例”标识。     * 注意:自定义Bean作用域可通过registerScope方法添加。     */    String SCOPE_SINGLETON = "singleton";    /**     * Bean作用域的“原型”标识。     * 注意:自定义Bean作用域可通过registerScope方法添加。     */    String SCOPE_PROTOTYPE = "prototype";    /**     * 设置该Bean工厂的父容器     * 注意:父容器不可被改变:如果在工厂实例化是不可用时,只能从外部的构造函数进行设置。     */    void setParentBeanFactory(BeanFactory parentBeanFactory) throws IllegalStateException;    /**     * 设置用于加载Bean类的类加载器。     * 注意:这个类加载器只能用在Bean定义(不含有Bean类解析),Bean定义只指定类名,只有Bean工厂处理Bean定义才被解析。     */    void setBeanClassLoader(ClassLoader beanClassLoader);    /**     * 返回用于加载Bean类的类加载器     */    ClassLoader getBeanClassLoader();    /**     * 指定一个用于类型匹配的临时类加载器。     * 默认为没有,简单使用标准的类加载器。     */    void setTempClassLoader(ClassLoader tempClassLoader);    /**     * 返回用于类型匹配的临时类加载器。     */    ClassLoader getTempClassLoader();    /**     * 设置是否开启缓存Bean元数据,默认是开启的。     */    void setCacheBeanMetadata(boolean cacheBeanMetadata);    /**     * 返回是否开启缓存Bean元数据。     */    boolean isCacheBeanMetadata();    /**     *      */    void setBeanExpressionResolver(BeanExpressionResolver resolver);    /**     *      */    BeanExpressionResolver getBeanExpressionResolver();    /**     *      */    void setConversionService(ConversionService conversionService);    /**     *      */    ConversionService getConversionService();    /**     *      */    void addPropertyEditorRegistrar(PropertyEditorRegistrar registrar);    /**     *      */    void registerCustomEditor(Class<?> requiredType, Class<? extends PropertyEditor> propertyEditorClass);    /**     *      */    void copyRegisteredEditorsTo(PropertyEditorRegistry registry);    /**     *      */    void setTypeConverter(TypeConverter typeConverter);    /**     *      */    TypeConverter getTypeConverter();    /**     *      */    void addEmbeddedValueResolver(StringValueResolver valueResolver);    /**     *      */    String resolveEmbeddedValue(String value);    /**     *      */    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);    /**     *      */    int getBeanPostProcessorCount();    /**     *      */    void registerScope(String scopeName, Scope scope);    /**     *      */    String[] getRegisteredScopeNames();    /**     *      */    Scope getRegisteredScope(String scopeName);    /**     *      */    AccessControlContext getAccessControlContext();    /**     *     */    void copyConfigurationFrom(ConfigurableBeanFactory otherFactory);    /**     *      */    void registerAlias(String beanName, String alias) throws BeanDefinitionStoreException;    /**     *      */    void resolveAliases(StringValueResolver valueResolver);    /**     *      */    BeanDefinition getMergedBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;    /**     *      */    boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException;    /**     *      */    void setCurrentlyInCreation(String beanName, boolean inCreation);    /**     *      */    boolean isCurrentlyInCreation(String beanName);    /**     *      */    void registerDependentBean(String beanName, String dependentBeanName);    /**     *     */    String[] getDependentBeans(String beanName);    /**     *     */    String[] getDependenciesForBean(String beanName);    /**     *      */    void destroyBean(String beanName, Object beanInstance);    /**     *      */    void destroyScopedBean(String beanName);    /**     *      */    void destroySingletons();}
原创粉丝点击