记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题

Spring Boot配置文件application.yml所有配置项突然全部出现warning提示的问题

在一次Spring Boot开发的过程当中,application.yml中所有的配置项都出现了warning提示,并且无法按Ctrl追踪至相应的配置类,如下图:
记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题

问题排查:pom文件

我首先检查了项目的pom文件,spring-boot-starter-web和mybatis-spring-boot-starter依赖已经正确加入到项目Library中。
记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题
记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题
既然pom没有问题,我就开始了下一步测试:启动项目。
和我预想的一样,项目启动和Debug没有任何问题!

问题排查:Idea设置

既然源代码可以被正常编译、执行,那么最大的可能就是Idea的设置问题了。
要寻找Idea的设置问题,首先需要知道application.yml的提示机制。

在所有开源的spring-boot-autoconfigure项目,包括但不限于spring-boot-autoconfigure、mybatis-spring-boot-configure中,都会找到如下文件:
META-INF/spring-configuration-metadata.json
记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题
这个文件定义了spring配置项的元数据,是application.yml提示机制的基础。
但是,在排查到上图时,有一个巨大的问题——这个json文件,在idea中被视作了一个普通的文本文件(Text)!
打开Idea的设置面板(Settings),找到File Types一项,并找到Text:
记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题
在这里发现,Idea的设置中将文件spring-configuration-metadata.json视作了普通文本文件,即Text。
这应该是在开发过程中的某一次误操作导致,那么只需要将这一项删除,Idea就能够恢复application.yml的提示机制。
记一次Idea下打开Spring Boot项目时,配置文件application.yml所有配置项突然全部出现warning提示的问题
果然,问题如期解决。