对于最新的稳定版本,请使用 Spring Boot 3.4.0spring-doc.cadn.net.cn

元数据格式

配置元数据文件位于 jar 内的META-INF/spring-configuration-metadata.json. 它们使用 JSON 格式,其中项分类在“groups”或“properties”下,其他值提示分类在“hints”下,如以下示例所示:spring-doc.cadn.net.cn

{"groups": [
	{
		"name": "server",
		"type": "org.springframework.boot.autoconfigure.web.ServerProperties",
		"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
	},
	{
		"name": "spring.jpa.hibernate",
		"type": "org.springframework.boot.autoconfigure.orm.jpa.JpaProperties$Hibernate",
		"sourceType": "org.springframework.boot.autoconfigure.orm.jpa.JpaProperties",
		"sourceMethod": "getHibernate()"
	}
	...
],"properties": [
	{
		"name": "server.port",
		"type": "java.lang.Integer",
		"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
	},
	{
		"name": "server.address",
		"type": "java.net.InetAddress",
		"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
	},
	{
		  "name": "spring.jpa.hibernate.ddl-auto",
		  "type": "java.lang.String",
		  "description": "DDL mode. This is actually a shortcut for the \"hibernate.hbm2ddl.auto\" property.",
		  "sourceType": "org.springframework.boot.autoconfigure.orm.jpa.JpaProperties$Hibernate"
	}
	...
],"hints": [
	{
		"name": "spring.jpa.hibernate.ddl-auto",
		"values": [
			{
				"value": "none",
				"description": "Disable DDL handling."
			},
			{
				"value": "validate",
				"description": "Validate the schema, make no changes to the database."
			},
			{
				"value": "update",
				"description": "Update the schema if necessary."
			},
			{
				"value": "create",
				"description": "Create the schema and destroy previous data."
			},
			{
				"value": "create-drop",
				"description": "Create and then destroy the schema at the end of the session."
			}
		]
	}
]}

每个 “property” 都是用户使用给定值指定的配置项。 例如server.portserver.address可以在application.properties/application.yaml如下:spring-doc.cadn.net.cn

server.port=9090
server.address=127.0.0.1
server:
  port: 9090
  address: 127.0.0.1

“组”是更高级别的项目,它们本身不指定值,而是为属性提供上下文分组。 例如,server.portserver.addressproperties 是server群。spring-doc.cadn.net.cn

不要求每个 “property” 都有一个 “group”。 某些属性可能本身就存在。

最后,“提示”是用于帮助用户配置给定属性的附加信息。 例如,当开发人员配置spring.jpa.hibernate.ddl-auto属性中,工具可以使用提示为none,validate,update,createcreate-drop值。spring-doc.cadn.net.cn

组属性

包含在groups数组可以包含下表中显示的属性:spring-doc.cadn.net.cn

名字 类型 目的

namespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

组的全名。 此属性是必需的。spring-doc.cadn.net.cn

typespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

组数据类型的类名。 例如,如果组基于一个带有@ConfigurationProperties,则该属性将包含该类的完全限定名称。 如果它基于@Beanmethod,它将是该方法的返回类型。 如果类型未知,则可以省略该属性。spring-doc.cadn.net.cn

descriptionspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

可向用户显示的组的简短描述。 如果没有可用的描述,则可以省略它。 建议描述为简短的段落,第一行提供简明的摘要。 描述中的最后一行应以句点 (.).spring-doc.cadn.net.cn

sourceTypespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

提供此组的源的类名。 例如,如果组基于@Bean方法注释@ConfigurationProperties,则此属性将包含@Configuration类。 如果源类型未知,则可以省略该属性。spring-doc.cadn.net.cn

sourceMethodspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

提供此组的方法的全名(包括括号和参数类型)(例如,一个@ConfigurationProperties注释@Bean方法)。 如果源方法未知,则可以省略它。spring-doc.cadn.net.cn

属性属性

包含在properties数组可以包含下表中描述的属性:spring-doc.cadn.net.cn

名字 类型 目的

namespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

属性的全名。 名称采用小写句点分隔形式(例如server.address). 此属性是必需的。spring-doc.cadn.net.cn

typespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

属性数据类型的完整签名(例如String),但也是一个完整的泛型类型(例如java.util.Map<java.lang.String,com.example.MyEnum>). 您可以使用此属性来指导用户了解他们可以输入的值类型。 为了保持一致性,原语的类型通过使用其包装器对应项(例如boolean成为Boolean). 请注意,此类可能是从String作为值绑定。 如果类型未知,则可以省略。spring-doc.cadn.net.cn

descriptionspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

可向用户显示的属性的简短说明。 如果没有可用的描述,则可以省略它。 建议描述为简短的段落,第一行提供简明的摘要。 描述中的最后一行应以句点 (.).spring-doc.cadn.net.cn

sourceTypespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

提供此属性的源的类名。 例如,如果属性来自一个带有@ConfigurationProperties,此属性将包含该类的完全限定名称。 如果源类型未知,则可以省略它。spring-doc.cadn.net.cn

defaultValuespring-doc.cadn.net.cn

对象spring-doc.cadn.net.cn

默认值,如果未指定属性,则使用该值。 如果属性的类型是数组,它可以是值的数组。 如果默认值未知,则可以省略它。spring-doc.cadn.net.cn

deprecationspring-doc.cadn.net.cn

折旧spring-doc.cadn.net.cn

指定是否弃用该属性。 如果该字段未弃用或该信息未知,则可以省略该字段。 下表提供了有关deprecation属性。spring-doc.cadn.net.cn

包含在deprecation每个properties元素可以包含以下属性:spring-doc.cadn.net.cn

名字 类型 目的

levelspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

弃用级别,可以是warning(默认)或error. 当属性具有warningdeprecation 级别,它仍应在环境中绑定。 但是,当它具有errordeprecation 级别,则该属性不再被管理且未绑定。spring-doc.cadn.net.cn

reasonspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

弃用属性的原因的简短描述。 如果没有可用的原因,则可以省略。 建议描述为简短的段落,第一行提供简明的摘要。 描述中的最后一行应以句点 (.).spring-doc.cadn.net.cn

replacementspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

替换此已弃用属性的属性的全名。 如果此属性没有替代项,则可以省略它。spring-doc.cadn.net.cn

sincespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

属性已弃用的版本。 可以省略。spring-doc.cadn.net.cn

在 Spring Boot 1.3 之前,单个deprecatedboolean 属性代替deprecation元素。 这仍然以已弃用的方式受支持,不应再使用。 如果没有可用的原因和替换项,则为空的deprecationobject 的

弃用也可以在代码中以声明方式指定,方法是将@DeprecatedConfigurationProperty注解传递给 getter 来公开已弃用的属性。 例如,假设my.app.targetproperty 令人困惑,并被重命名为my.app.name. 以下示例显示如何处理这种情况:spring-doc.cadn.net.cn

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;

@ConfigurationProperties("my.app")
public class MyProperties {

	private String name;

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Deprecated
	@DeprecatedConfigurationProperty(replacement = "my.app.name")
	public String getTarget() {
		return this.name;
	}

	@Deprecated
	public void setTarget(String target) {
		this.name = target;
	}

}
无法设置level.warning始终假定,因为代码仍在处理该属性。

前面的代码确保 deprecated 属性仍然有效(委托给name幕后属性)。 一旦getTargetsetTarget方法可以从你的公共 API 中删除,元数据中的自动弃用提示也会消失。 如果您想保留提示,请使用errordeprecation 级别可确保用户仍会收到有关该属性的信息。 当replacementspring-doc.cadn.net.cn

Hint 属性

包含在hints数组可以包含下表中显示的属性:spring-doc.cadn.net.cn

名字 类型 目的

namespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

此提示所引用的属性的全名。 名称采用小写句点分隔形式(例如spring.mvc.servlet.path). 如果该属性引用映射(例如system.contexts),则提示将应用于映射 (system.contexts.keys) 或 (system.contexts.values) 中。 此属性是必需的。spring-doc.cadn.net.cn

valuesspring-doc.cadn.net.cn

ValueHint[]spring-doc.cadn.net.cn

ValueHint对象(如下表所述)。 每个条目都定义值,并且可能具有说明。spring-doc.cadn.net.cn

providersspring-doc.cadn.net.cn

ValueProvider[]spring-doc.cadn.net.cn

ValueProvider对象(本文档稍后将介绍)。 每个条目都定义提供程序的名称及其参数(如果有)。spring-doc.cadn.net.cn

包含在values每个hint元素可以包含下表中描述的属性:spring-doc.cadn.net.cn

名字 类型 目的

valuespring-doc.cadn.net.cn

对象spring-doc.cadn.net.cn

提示引用的元素的有效值。 如果属性的类型是数组,则它也可以是值的数组。 此属性是必需的。spring-doc.cadn.net.cn

descriptionspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

可向用户显示的值的简短描述。 如果没有可用的描述,则可以省略它。 建议描述为简短的段落,第一行提供简明的摘要。 描述中的最后一行应以句点 (.).spring-doc.cadn.net.cn

包含在providers每个hint元素可以包含下表中描述的属性:spring-doc.cadn.net.cn

名字 类型 目的

namespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

用于为提示引用的元素提供其他内容帮助的提供程序的名称。spring-doc.cadn.net.cn

parametersspring-doc.cadn.net.cn

JSON 对象spring-doc.cadn.net.cn

提供程序支持的任何其他参数(有关更多详细信息,请查看提供程序的文档)。spring-doc.cadn.net.cn

重复的元数据项

具有相同“属性”和“组”名称的对象可以在元数据文件中多次出现。 例如,您可以将两个单独的类绑定到同一个前缀,每个类都有可能重叠的属性名称。 虽然元数据中多次出现的相同名称应该不常见,但元数据的使用者应注意确保他们支持它。spring-doc.cadn.net.cn