ConfigurableBeanFactory继承了HierarchicalBeanFactory, SingletonBeanRegistry两个接口。这个接口将被大多数bean工厂实现。segmentfault
这个方法,比以前的都多,没有截全。缓存
String SCOPE_SINGLETON = "singleton";//单例 String SCOPE_PROTOTYPE = "prototype";//多例
设置父类容器安全
void setParentBeanFactory(BeanFactory parentBeanFactory) throws IllegalStateException;
类加载器编辑器
// 设置类加载器 void setBeanClassLoader(@Nullable ClassLoader beanClassLoader); // 获取类加载器 ClassLoader getBeanClassLoader(); // 设置临时加载器,若是涉及到加载时编织,一般只指定一个临时类装入器,以确保实际的bean类被尽量延迟地装入 void setTempClassLoader(@Nullable ClassLoader tempClassLoader); // 获取临时加载器 ClassLoader getTempClassLoader();
bean的元数据缓存,默认为true。若是为false,每次建立bean都要从类加载器获取信息。post
// 设置是否缓存 void setCacheBeanMetadata(boolean cacheBeanMetadata); // 获取是否缓存 boolean isCacheBeanMetadata();
bean的表达式解析器ui
// 设置表达式解析器 void setBeanExpressionResolver(@Nullable BeanExpressionResolver resolver); // 获取表达式解析器 BeanExpressionResolver getBeanExpressionResolver();
类型转换器spa
// 设置类型转换器 void setConversionService(@Nullable ConversionService conversionService); // 获取类型转换器 ConversionService getConversionService();
属性编辑器prototype
// 添加属性编辑器 void addPropertyEditorRegistrar(PropertyEditorRegistrar registrar); // 注册给定类型的属性编辑器 void registerCustomEditor(Class<?> requiredType, Class<? extends PropertyEditor> propertyEditorClass); // 使用在这个BeanFactory中注册的自定义编辑器初始化给定的PropertyEditorRegistry void copyRegisteredEditorsTo(PropertyEditorRegistry registry);
类型转换器code
// 设置类型转换器 void setTypeConverter(TypeConverter typeConverter); // 获取类型转换器 TypeConverter getTypeConverter();
为嵌入的值(如注释属性)添加字符串解析器对象
// 添加 void addEmbeddedValueResolver(StringValueResolver valueResolver); // 是否有 boolean hasEmbeddedValueResolver(); // 解析给定的嵌入值 String resolveEmbeddedValue(String value);
后置处理器,BeanPostProcessor
// 增长后置处理器 void addBeanPostProcessor(BeanPostProcessor beanPostProcessor); // 获取后置处理器的个数 int getBeanPostProcessorCount();
做用域
// 注册做用域 void registerScope(String scopeName, Scope scope); // 获取做用域,除了单例和多例 String[] getRegisteredScopeNames(); // 经过名称获取做用域 Scope getRegisteredScope(String scopeName);
安全做用域
// 获取安全做用域 AccessControlContext getAccessControlContext();
配置复制。复制内容包括全部标准配置设置以及beanpostprocessor、做用域和特定于工厂的内部设置。不该该包含任何实际bean定义的元数据,例如BeanDefinition对象和bean名称别名。
void copyConfigurationFrom(ConfigurableBeanFactory otherFactory);
别名
// 注册别名 void registerAlias(String beanName, String alias) throws BeanDefinitionStoreException; // 根据valueResolver移除别名 void resolveAliases(StringValueResolver valueResolver);
BeanDefinition
// 合并bean的定义,包括父类继承下来的 BeanDefinition getMergedBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
FactoryBean
// 是不是FactoryBean boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException;
正在建立的bean
// 设置bean是否在建立,循环依赖的时候要靠这个解决 void setCurrentlyInCreation(String beanName, boolean inCreation); boolean isCurrentlyInCreation(String beanName);
依赖的bean
// 注册一个指定bean的依赖bean void registerDependentBean(String beanName, String dependentBeanName); // 获取依赖指定bean的全部bean String[] getDependentBeans(String beanName); // 获取指定bean的全部依赖 String[] getDependenciesForBean(String beanName);
销毁bean
// 销毁指定的bean void destroyBean(String beanName, Object beanInstance); // 销毁指定范围的bean void destroyScopedBean(String beanName); // 销毁全部的单例bean void destroySingletons();