spring学习之源码分析ConfigurableListableBeanFactory

5次阅读

共计 958 个字符,预计需要花费 3 分钟才能阅读完成。

ConfigurableListableBeanFactory

ConfigurableListableBeanFactory 继承了 ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory。在 ConfigurableBeanFactory 的基础上,它还提供了分析和修改 bean 定义以及预实例化单例的工具

类结构

方法解析

忽略自动装配

// 在装配的时候忽略指定的依赖类型
void ignoreDependencyType(Class<?> type);
// 在装配的时候忽略指定的接口
void ignoreDependencyInterface(Class<?> ifc);

依赖

// 注册可解析的依赖
void registerResolvableDependency(Class<?> dependencyType, @Nullable Object autowiredValue);
// 指定的 bean 是否可以作为自动选派的候选,boolean isAutowireCandidate(String beanName, DependencyDescriptor descriptor)
            throws NoSuchBeanDefinitionException;

BeanDefinition

// 根据 bean 名称获取 BeanDefinition
BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
/ / 获取 bean 名称的 Iterator
Iterator<String> getBeanNamesIterator()

bean 的元数据缓存

void clearMetadataCache();

冻结 bean 的配置

// 冻结所有 bean 定义,表明注册的 bean 定义将不再修改或后期处理。void freezeConfiguration();
// bean 的定义是否被冻结
boolean isConfigurationFrozen();

lazy-init 相关

// 非延迟加载的 bean 都实例化
void preInstantiateSingletons() throws BeansException;

正文完
 0