您的位置:首页 > 编程语言 > Java开发

Spring框架之IoC容器—ConfigurableBeanFactory接口

2017-10-27 14:28 363 查看

一、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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: