侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计创建 52 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

解决 Spring Boot 配置文件中自定义属性提示 Can not resolve configuration property 'xxx'

Stone
2022-06-28 / 0 评论 / 1 点赞 / 592 阅读 / 673 字

问题描述

Spring Boot 中的 application.yml 文件中,如果存在自定义属性, IDEA 会有如下提示:

Cannot resolve configuration property 'xxx'

这其实是一个警告,可以不用理会,程序正常运行不会报错,代码中也可以通过 @Value("${}") 正常获取到值,但是强迫症看了就想解决一下。

Can not resolve configuration property

整理教程时的系统环境

Windows 11 21H2 22000.739
IntelliJ IDEA 2021.3.2
SpringBoot 2.3.0.RELEASE

解决方案

关闭检查(不推荐)

最暴力的方法就是关闭这个检查:

Invalid YAML configuration

进入设置中的 Editor-->Inspection-->Spring-->Spring Boot-->Invalid YAML configuration,去掉右边勾选(上面也有 Invalid properties configuration 这个选项,如果配置文件为 properties 结尾的可以选这个)。可以看到说明文字中提到了两个文件 spring-configuration-metadata.jsonspring-additional-configuration-metadata.json,后文可以用得到。

保存后可以直观的看到,黄色的警告信息已经没了,不过还是想知道怎么去解决这个问题,所以搜了一下配置说明中的文件。

配置元数据

按照 IDEA 给出的提示信息,是创建 Metadata File 解决。

Create Metadata File for 'xxx' in

不过使用工具虽然自动生成文件了,但是会产生报错信息,而且警告没得到解决

The file 'additional-spring-configuration-metadata.json' is not associated with JSON file type

可以看到文件中是空数组,右上角提示安装插件,那就安个吧

安装 Spring Initializr and Assistant 插件

安完还真是能生成配置了,不过警告还是没得到解决

Spring Boot Configuration Annotation Processor not configured

additional-spring-configuration-metadata.jsonspring-configuration-metadata.jsonspringboot-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 regular spring-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 类来配合,这里就先不尝试这种方式了。

提示信息消息

1

评论区