在写公共库的时候, 遇到一个场景, 需要在公共库中代码对配置进行解析, 但是在业务项目中写配置文件时会出现, Cannot resolve configuration property 'xxx'. 一开始在公共库添加了"additional-spring-configuration-metadata.json", 但该json是针对当前项目的. 在业务项目中仍然出现"Cannot resolve configuration property ". 公共库添加spring-configuration-metadata.json
文件, 问题解决, 下面介绍下spring-configuration-metadata.
spring-configuration-metadata.json
是一个由 Spring Boot 自动生成的文件,其主要目的是为了提供关于应用程序中可配置属性的详细信息,包括属性的名称、数据类型、描述、默认值和废弃信息等。这个文件主要被用于 IDE 中的代码补全和提示。
创建spring-configuration-metadata.json
的过程通常是在项目构建过程中自动完成的。如果在项目中使用了 Spring Boot 的 @ConfigurationProperties
注解,那么在构建项目时,Spring Boot 会自动扫描这些注解,然后生成相应的元数据文件。
这个文件通常位于项目的 target/classes/META-INF
目录下,也可以在项目的 classpath 中找到。
例如,一个使用了 @ConfigurationProperties
注解的类可能如下所示:
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private int timeout;
// getter 和 setter
}
在生成的 spring-configuration-metadata.json
文件中,可能会包含如下的元数据:
{
"groups": [
{
"name": "app",
"type": "com.example.AppConfig",
"sourceType": "com.example.AppConfig"
}
],
"properties": [
{
"name": "app.name",
"type": "java.lang.String",
"sourceType": "com.example.AppConfig"
},
{
"name": "app.timeout",
"type": "java.lang.Integer",
"sourceType": "com.example.AppConfig"
}
],
"hints": []
}
这些元数据可以提供给 IDE 或其他工具,以更方便地配置和使用应用程序。