ConfigurableBeanFactory解读
ConfigurableBeanFactory解读
ConfigurableBeanFactory介绍
ConfigurableBeanFactory是一个接口,提供配置BeanFactory的各种方法,继承HierarchicalBeanFactory, SingletonBeanRegistry这两个接口。
提供了配置父容器,注册bean,添加BeanPostProcessor,设置Bean表达式分解器等功能
public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry
ConfigurableBeanFactory源码
ConfigurableBeanFactory源码翻译来自:Spring源码分析——BeanFactory体系之接口详细分析 - Chandler Qian - 博客园 (cnblogs.com)
public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {
String SCOPE_SINGLETON = "singleton"; // 单例
String SCOPE_PROTOTYPE = "prototype"; // 原型
/*
* 搭配HierarchicalBeanFactory接口的getParentBeanFactory方法
*/
void setParentBeanFactory(BeanFactory parentBeanFactory) throws IllegalStateException;
/*
* 设置、返回工厂的类加载器
*/
void setBeanClassLoader(ClassLoader beanClassLoader);
ClassLoader getBeanClassLoader();
/*
* 设置、返回一个临时的类加载器
*/
void setTempClassLoader(ClassLoader tempClassLoader);
ClassLoader getTempClassLoader();
/*
* 设置、是否缓存元数据,如果false,那么每次请求实例,都会从类加载器重新加载(热加载)
*/
void setCacheBeanMetadata(boolean cacheBeanMetadata);
boolean isCacheBeanMetadata();//是否缓存元数据
/*
* Bean表达式分解器
*/
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();
/*
* 增加一个嵌入式的StringValueResolver
*/
void addEmbeddedValueResolver(StringValueResolver valueResolver);
String resolveEmbeddedValue(String value);//分解指定的嵌入式的值
void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);//设置一个Bean后处理器
int getBeanPostProcessorCount();//返回Bean后处理器的数量
void registerScope(String scopeName, Scope scope);//注册范围
String[] getRegisteredScopeNames();//返回注册的范围名
Scope getRegisteredScope(String scopeName);//返回指定的范围
AccessControlContext getAccessControlContext();//返回本工厂的一个安全访问上下文
void copyConfigurationFrom(ConfigurableBeanFactory otherFactory);//从其他的工厂复制相关的所有配置
/*
* 给指定的Bean注册别名
*/
void registerAlias(String beanName, String alias) throws BeanDefinitionStoreException;
void resolveAliases(StringValueResolver valueResolver);//根据指定的StringValueResolver移除所有的别名
/*
* 返回指定Bean合并后的Bean定义
*/
BeanDefinition getMergedBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException;//判断指定Bean是否为一个工厂Bean
void setCurrentlyInCreation(String beanName, boolean inCreation);//设置一个Bean是否正在创建
boolean isCurrentlyInCreation(String beanName);//返回指定Bean是否已经成功创建
void registerDependentBean(String beanName, String dependentBeanName);//注册一个依赖于指定bean的Bean
String[] getDependentBeans(String beanName);//返回依赖于指定Bean的所欲Bean名
String[] getDependenciesForBean(String beanName);//返回指定Bean依赖的所有Bean名
void destroyBean(String beanName, Object beanInstance);//销毁指定的Bean
void destroyScopedBean(String beanName);//销毁指定的范围Bean
void destroySingletons(); //销毁所有的单例类
}
标签:
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)