Spring版本:
<version>5.2.1.RELEASE</version>
上一篇:14-Spring源码解析之refresh(7)——【onRefresh】和【registerListeners】
上一篇,我们讲解了refresh方法中调用的第9个onRefresh
方法和第10个registerListeners
方法。接着本篇文章讲解refresh
方法调用的第11个finishBeanFactoryInitialization
方法。也是Spring
中最核心的方法。
一、finishBeanFactoryInitialization
protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) {
// Initialize conversion service for this context.
// 初始化上下文的转换服务
if (beanFactory.containsBean(CONVERSION_SERVICE_BEAN_NAME) &&
beanFactory.isTypeMatch(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class)) {
beanFactory.setConversionService(
beanFactory.getBean(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class));
}
// Register a default embedded value resolver if no bean post-processor
// (such as a PropertyPlaceholderConfigurer bean) registered any before:
// at this point, primarily for resolution in annotation attribute values.
// 注册默认的嵌入值解析器
// 如:PropertyPlaceholderConfigurer
if (!beanFactory.hasEmbeddedValueResolver()) {
beanFactory.addEmbeddedValueResolver(strVal -> getEnvironment().resolvePlaceholders(strVal));
}
// 根据LoadTimeWeaverAware类型,来获取LoadTimeWeaverAwareName,如果有则创建这个LoadTimeWeaverAware
String[