问题描述
在 Spring Boot
中的 application.yml
文件中,如果存在自定义属性, IDEA
会有如下提示:
Cannot resolve configuration property 'xxx'
这其实是一个警告,可以不用理会,程序正常运行不会报错,代码中也可以通过 @Value("${}")
正常获取到值,但是强迫症看了就想解决一下。
整理教程时的系统环境
Windows 11 21H2 22000.739
IntelliJ IDEA 2021.3.2
SpringBoot 2.3.0.RELEASE
解决方案
关闭检查(不推荐)
最暴力的方法就是关闭这个检查:
进入设置中的 Editor-->Inspection-->Spring-->Spring Boot-->Invalid YAML configuration
,去掉右边勾选(上面也有 Invalid properties configuration
这个选项,如果配置文件为 properties
结尾的可以选这个)。可以看到说明文字中提到了两个文件 spring-configuration-metadata.json
和 spring-additional-configuration-metadata.json
,后文可以用得到。
保存后可以直观的看到,黄色的警告信息已经没了,不过还是想知道怎么去解决这个问题,所以搜了一下配置说明中的文件。
配置元数据
按照 IDEA
给出的提示信息,是创建 Metadata File
解决。
不过使用工具虽然自动生成文件了,但是会产生报错信息,而且警告没得到解决
可以看到文件中是空数组,右上角提示安装插件,那就安个吧
安完还真是能生成配置了,不过警告还是没得到解决
additional-spring-configuration-metadata.json
、spring-configuration-metadata.json
在 springboot-starter
官方项目或第三方 starter 项目中随处可见,官方一篇文章很详细讲解了 Configuration Metadata
的作用。有兴趣的小伙伴可以查看下(配置元数据)。
简单看了一下,如果不对的请指正:
B.1
目录中指出:配置元数据文件位于 META-INF/spring-configuration-metadata.json
Configuration metadata files are located inside jars under
META-INF/spring-configuration-metadata.json
B.3
目录中 additional-spring-configuration-metadata.json
为个人进行拓展时使用的配置,文章最后有说明文字:
The format of the
additional-spring-configuration-metadata.json
file is exactly the same as the regularspring-configuration-metadata.json
. The additional properties file is optional. If you do not have any additional properties, do not add the file.
既然是可选,而且现在目的还未达到,那就将 addtional-spring-configuration-metadata.json
重命名为 spring-configuration-metadata.json
试一下,成功了。 addtional-spring-configuration-metadata.json
应该是需要编写对应的 @ConfigurationProperties
类来配合,这里就先不尝试这种方式了。
评论区