1、代码入口
2、Environment代码继承关系
3、构建流程
1、创建ConfigurableEnvironment实例对象,在父类的构造函数中,已经将System.getenv()和System.getProperties()的参数都添加进来了。参照:AbstractEnvironment#customizePropertySources()
2、添加各种类型数据的解析器,添加容器的默认配置,添加main方法中的String[] args
3、将当前环境中已有的配置用ConfigurationPropertySourcesPropertySource进行包装,并addFirst。不知道干啥用
4、 发布环境准备完成事件:ApplicationEnvironmentPreparedEvent,触发监听器
5、将默认配置移到最后 addLast
6、 装配以spring.main前缀开头的配置项 ?不太确定
4、总结
- System.getenv()和System.getProperties()的参数都可以从spring环境中获取到
- ApplicationEnvironmentPreparedEvent事件发布时,spring环境中只有System系统配置,其他配置项尚未加载进来。