Spring配置Meta元数据

在 Spring Boot 的配置元数据(spring-configuration-metadata.json)中,groups 数组用于对相关的配置属性进行逻辑分组,本身并不直接对应一个具体的配置值。它主要供 IDE 等工具使用,以提供更好的上下文提示和代码补全功能 。
配置元数据文件存储在 jar 文件的 META-INF/spring-configuration-metadata.json 目录下。这些文件采用 JSON 格式进行存储。其中,各项内容被分类为“groups”或“properties”;额外的值信息则被归类为“hints”;而被忽略的项则被标记为“ignored”。

通过配置元数据可以使得我们在项目中进行配置yml等配置时,IDE提供提示。
例如:

{  
  "groups": [  
    {  
      "name": "tj.auth.resource",  
      "sourceType": "com.guilu.config.ResourceAuthProperties"  
    }  
  ],  
  "properties": [  
    {  
      "name": "tj.auth.resource.enable",  
      "type": "java.lang.Boolean",  
      "description": "是否开启登录拦截功能,如果开启则需要指定拦截路径,默认拦截所有",  
      "sourceType": "com.guilu.config.ResourceAuthProperties",  
      "defaultValue": false  
    },  
    {  
      "name": "tj.auth.resource.includeLoginPaths",  
      "type": "java.util.List",  
      "description": "要拦截的路径,例如:/user/**",  
      "sourceType": "com.guilu.config.ResourceAuthProperties"  
    },  
    {  
      "name": "tj.auth.resource.excludeLoginPaths",  
      "type": "java.util.List",  
      "description": "不拦截的路径,例如:/user/**",  
      "sourceType": "com.guilu.config.ResourceAuthProperties"  
    }  
  ],  
  "hints": []  
}

Group组属性:

  1. name:组名称(必填)
  2. type:该组所对应的数据类型的类名。例如,如果该组是基于被注解为 @ConfigurationProperties 的类而构成的,那么该属性将包含该类的完整名称。如果该组是基于 @Bean 方法而构成的,那么该属性将包含该方法的返回类型。如果该数据的类型不明确,那么可以省略该属性。
  3. description:可以显示给用户的关于该群的简短描述。如果没有描述内容,可以省略不写。
  4. sourceType:生成该组的源代码所属的类名。例如,如果该组是基于某个被 @ConfigurationProperties 注解的 @Bean 方法生成的,那么该属性将包含包含该方法的 @Configuration 类的完整名称。如果无法确定源代码的类型,则可以省略该属性。
  5. sourceMethod:生成该组的方法的完整名称(包括括号和参数类型)(例如,带有 @ConfigurationProperties 注解的 @Bean 方法的名称)。如果无法确定源方法的名称,则可以省略。

Properties属性:

  1. name:属性名称
  2. type:属性类型。该属性的数据类型的全称形式(例如 String ),以及其泛型形式(如 java.util.Map<java.lang.String,com.example.MyEnum> )。
  3. description:属性的描述
  4. sourceType:包含该属性的源代码所属的类名。例如,如果该属性来自被 @ConfigurationProperties 注解的类,那么该属性值就包含该类的完整名称
  5. defaultValue:该属性的默认值,当配置文件中未配置时则使用该值。

Hint提示属性:

  1. name:提示对应的属性全称
  2. value:ValueHint 对象所定义的有效值列表如下表所示。每项都包含了具体的数值。
    1. value:该提示所对应的元素的合法值。如果该属性的类型为数组,那么该值也可以是一个值数组。此属性为必填项。
    2. description:内容的描述
  3. preovider:由 ValueProvider 对象所定义的各个提供者列表
    1. name:用于为该提示所对应的元素提供额外内容支持的提供商的名称。
    2. parameters:支持的任何其他参数

Ignored丢弃的属性:

properties:由 ItemIgnore 对象所定义的、被忽略的属性列表。
name:忽略的属性的完整的名称。名称应以小写字母加上句点来表示(例如 spring.mvc.servlet.path )。
官方文档:元数据格式 :: Spring Boot --- Metadata Format :: Spring Boot

posted @ 2026-09-22 20:28  归鹭  阅读(1)  评论(0)    收藏  举报