ConfigurableBeanFactory继承自HierarchicalBeanFactory,SingletonBeanRegistry,这两个接口我们在前面已经介绍过,大家可以看下具体的介绍,Spring源码分析-IOC之HierarchicalBeanFactory,Spring源码分析-IOC之SingletonBeanRegistry,
ConfigurableBeanFactory提供了配置Factory的各种方法,我们来看下具体的代码:
public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {
//单例
String SCOPE_SINGLETON = "singleton";
//原型
String SCOPE_PROTOTYPE = "prototype";
//设置父类的BeanFactory,可以在HierarchicalBeanFactory中看到父类的BeanFactory的设置
void setParentBeanFactory(BeanFactory parentBeanFactory) throws IllegalStateException;
//设置类加载器
void setBeanClassLoader(ClassLoader beanClassLoader);
//获取类加载器
ClassLoader getBeanClassLoader();
//设置临时加载器
void setTempClassLoader(ClassLoader tempClassLoader);
//获取临时加载器
ClassLoader getTempClassLoader();
//设置是否缓存源,false,从新从类加载器加载
void setCacheBeanMetadata(boolean cacheBeanMetadata);
//是否缓存了definitions
boolean isCacheBeanMetadata();
//bean的表达式解析
void setBeanExpressionResolver(BeanExpressionResolver resolver);
//获取bean的表达式解析
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();
// 增加一个嵌入式的StringValueResolve
void addEmbeddedValueResolver(StringValueResolver valueResolver);
//确定定是否有一个嵌入式的value resolver已经在这个bean factory中注册了,并且可以通过resolveEmbeddedValue函数来应用.
String resolveEmbeddedValue(String value);
//增加一个BeanPostProcessor的处理器 前后
void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);
//获取BeanPostProcessor的数量
int getBeanPostProcessorCount();
//注册bean的范围
void registerScope(String scopeName, Scope scope);
//获取bean的范围
String[] getRegisteredScopeNames();
//获取注册的范围
Scope getRegisteredScope(String scopeName);
//返回本工厂的一个安全访问上下文
AccessControlContext getAccessControlContext();
//复制其他工程的属性配置
void copyConfigurationFrom(ConfigurableBeanFactory otherFactory);
//给指定的bean注册别名
void registerAlias(String beanName, String alias) throws BeanDefinitionStoreException;
//根据StringValueResolver来移除bean
void resolveAliases(StringValueResolver valueResolver);
//返回合并后的Beandefinition
BeanDefinition getMergedBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
//判断bean是否是FactoryBean
boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException;
//设置一个是否正在创建的bean
void setCurrentlyInCreation(String beanName, boolean inCreation);
//判断bean是否正在创建
boolean isCurrentlyInCreation(String beanName);
//为bean注册一个依赖bean
void registerDependentBean(String beanName, String dependentBeanName);
//获取bean的所有依赖bean
String[] getDependentBeans(String beanName);
//返回给定名字Bean所依赖的所有Bean名称.
String[] getDependenciesForBean(String beanName);
//销毁指定的bean
void destroyBean(String beanName, Object beanInstance);
//销毁指定的
void destroyScopedBean(String beanName);
//销毁单例对象
void destroySingletons();
}
我们可以看到这里面的好多方法的实现我们在前面的Spring源码分析-IOC之DefaultSingletonBeanRegistry已经分析过大家可以参考下,具体的实现.