2023-09-15
原文作者:王伟王胖胖 原文地址: https://blog.csdn.net/wangwei19871103/article/details/105739871

PropertySourceBootstrapConfiguration的initialize尾巴

还有个尾巴我就不多说了,就是一些处理,将结果放进环境,然后重新初始化等。

    	if (!empty) {//如果结果不为空
    			MutablePropertySources propertySources = environment.getPropertySources();
    			String logConfig = environment.resolvePlaceholders("${logging.config:}");
    			LogFile logFile = LogFile.get(environment);
    			for (PropertySource<?> p : environment.getPropertySources()) {
    				if (p.getName().startsWith(BOOTSTRAP_PROPERTY_SOURCE_NAME)) {
    					propertySources.remove(p.getName());//删除bootstrapProperties,因为bootstrap已经处理完了
    				}
    			}
    			//将结果放入环境的MutablePropertySources中
    			insertPropertySources(propertySources, composite);
    			//重新初始化log系统
    			reinitializeLoggingSystem(environment, logConfig, logFile);
    			//设置log级别
    			setLogLevels(applicationContext, environment);
    			//处理包含的环境配置
    			handleIncludedProfiles(environment);
    		}

NacosConfigAutoConfiguration

NacosConfigProperties从老上下文中获取

BootstrapApplicationListener中创建的新上下文中的单例:

202309152315418451.png
这里的NacosConfigProperties是从新上下文里获取来的,不是新创建的。

202309152315430082.png
可以看到出现在老上下文中了:

202309152315436613.png
老上下文的parent就是新上下文,有兴趣的可以看里面的信息。

202309152315446124.png

其他重新创建

其实就是这些里面的。

202309152315453085.png

我给个图吧:

202309152315459426.png

下篇再继续分析这些类干嘛的。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。

阅读全文