Official Guide

官方升级指南

熟悉外部化配置的同学应该知道,我们获取属性都是从 Bean => Environment中获取的,所以我们打印 Standard的getPropertySources()即可知道

同样是外部化配置 spring.profiles.active=dev

2.3.5.RELEASE

2.4.1

为什么做了如此改变

官方issue : #2404 =>#3845

即可了解到 =>
2.4之前 => 即时我们采用外部化配置,也会有困惑,貌似外部化配置不生效的问题,因为他是按照外部化 dev => 内部 dev ,外部default,内部 default 这样加载

2.4之后 => 按照之前顺序 先加载外部化 file,再加载内部的classpath文件. 这样只要外面配置了文件就一定会覆盖内部的,会生效。

2.4的外部化配置还有哪些 ?

增加了组概念
增加了对容器化等支持
增加了方便的import 导入其他配置文件到environment 之间我们做过类似的事情 => 让@EnableConfigurationProperties的值注入到@Value中

本质上代码是怎么改的 ?

原本的配置文件加载类 ConfigFileApplicationListener标记了@Deprecated favor of => org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor => org.springframework.boot.context.config.ConfigDataEnvironment

这样就改变了加载策略,从而减少使用困惑(明明配置了外部化文件,为什么会不生效呢?)