Official Guide
熟悉外部化配置的同学应该知道,我们获取属性都是从 Bean => Environment中获取的,所以我们打印 Standard的getPropertySources()即可知道
同样是外部化配置 spring.profiles.active=dev
2.3.5.RELEASE
2.4.1
为什么做了如此改变
即可了解到 =>
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
这样就改变了加载策略,从而减少使用困惑(明明配置了外部化文件,为什么会不生效呢?)