springboot 元数据配置 additional-spring-configuration-metadata 获取不到默认值 defaultValue

resources/META-INF/additional-spring-configuration-metadata.json
定义默认值

图片说明

resources/application.yml
如果设置 lte.proj 可以获取到值

图片说明

lte.java

图片说明

如果在 application.yml 配置lte.proj属性能获取到值,如果不配置 获取不到additional-spring-configuration-metadata.json 设置的默认值,,,,,,,就是这个问题

使用这个是为了定义默认值。默认值也可以在代码里定义,但是我看了官方的代码是在metadata.json里的定义的默认值,代码并没有

替代方案:

@ConfigurationProperties(prefix = "lte")
public class LTE {
    private String proj = "lte"; // lte 这个是默认值,如果在yml中声明改属性   会被覆盖
}

看到你这个问题,我第一反应是非常惊讶,yml和propertie都有良好的管理型和可读性,为啥还要增加json呢,难道是为了让新手用工具配置的时候更好用?
我专门去spring boot的doc管网查看了下,上面仍然只有yml和properties两种配置方式,(还有基于类的配置,和文件配置不是一类)。
我又专门看了additional-spring-configuration-metadata和spring-configuration-metadata两个的解释。
感觉,似乎,大致的意思是,这是用来给ide工具识别配置内容对不对的,也就是idea或者eclipse里,配置yml和properties时,代码提示功能的提供者和验证者。
这个文件应该是类似于xml中的xsd的意义,只是用来检测配置对不对的。
所以你正常配置项目,仍然只能使用yml这种文件格式。
纯属个人理解,英语不好,看的迷迷糊糊的。