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组属性:
- name:组名称(必填)
- type:该组所对应的数据类型的类名。例如,如果该组是基于被注解为
@ConfigurationProperties的类而构成的,那么该属性将包含该类的完整名称。如果该组是基于@Bean方法而构成的,那么该属性将包含该方法的返回类型。如果该数据的类型不明确,那么可以省略该属性。 - description:可以显示给用户的关于该群的简短描述。如果没有描述内容,可以省略不写。
- sourceType:生成该组的源代码所属的类名。例如,如果该组是基于某个被
@ConfigurationProperties注解的@Bean方法生成的,那么该属性将包含包含该方法的@Configuration类的完整名称。如果无法确定源代码的类型,则可以省略该属性。 - sourceMethod:生成该组的方法的完整名称(包括括号和参数类型)(例如,带有
@ConfigurationProperties注解的@Bean方法的名称)。如果无法确定源方法的名称,则可以省略。
Properties属性:
- name:属性名称
- type:属性类型。该属性的数据类型的全称形式(例如
String),以及其泛型形式(如java.util.Map<java.lang.String,com.example.MyEnum>)。 - description:属性的描述
- sourceType:包含该属性的源代码所属的类名。例如,如果该属性来自被
@ConfigurationProperties注解的类,那么该属性值就包含该类的完整名称 - defaultValue:该属性的默认值,当配置文件中未配置时则使用该值。
Hint提示属性:
- name:提示对应的属性全称
- value:
ValueHint对象所定义的有效值列表如下表所示。每项都包含了具体的数值。- value:该提示所对应的元素的合法值。如果该属性的类型为数组,那么该值也可以是一个值数组。此属性为必填项。
- description:内容的描述
- preovider:由
ValueProvider对象所定义的各个提供者列表- name:用于为该提示所对应的元素提供额外内容支持的提供商的名称。
- parameters:支持的任何其他参数
Ignored丢弃的属性:
properties:由 ItemIgnore 对象所定义的、被忽略的属性列表。
name:忽略的属性的完整的名称。名称应以小写字母加上句点来表示(例如 spring.mvc.servlet.path )。
官方文档:元数据格式 :: Spring Boot --- Metadata Format :: Spring Boot

浙公网安备 33010602011771号