配置元数据文件位于 jar 下的 jar 中。 它们使用 JSON 格式,其中项目分类在“组”或“属性”下,其他值提示分类在“提示”下,如以下示例所示:META-INF/spring-configuration-metadata.jsonSpring中文文档

{"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."
			}
		]
	}
]}

每个“属性”都是用户使用给定值指定的配置项。 例如,可以在 / 中指定 and,如下所示:server.portserver.addressapplication.propertiesapplication.yamlSpring中文文档

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

“组”是更高级别的项目,它们本身不指定值,而是为属性提供上下文分组。 例如,和 属性是组的一部分。server.portserver.addressserverSpring中文文档

并不要求每个“属性”都有一个“组”。 某些属性可能以自身权利存在。

最后,“提示”是用于帮助用户配置给定属性的附加信息。 例如,当开发人员配置属性时,工具可以使用提示为 、 、 、 和 值提供一些自动完成帮助。spring.jpa.hibernate.ddl-autononevalidateupdatecreatecreate-dropSpring中文文档

并不要求每个“属性”都有一个“组”。 某些属性可能以自身权利存在。

组属性

数组中包含的 JSON 对象可以包含下表中显示的属性:groupsSpring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

组的全名。 此属性是必需的。Spring中文文档

typeSpring中文文档

字符串Spring中文文档

组的数据类型的类名。 例如,如果该组基于用 批注的类,则该属性将包含该类的完全限定名称。 如果它基于一个方法,它将是该方法的返回类型。 如果类型未知,则可以省略该属性。@ConfigurationProperties@BeanSpring中文文档

descriptionSpring中文文档

字符串Spring中文文档

可以向用户显示的组的简短说明。 如果没有可用的描述,则可以省略它。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

sourceTypeSpring中文文档

字符串Spring中文文档

贡献此组的源的类名。 例如,如果组基于用 批注的方法,则此属性将包含包含该方法的类的完全限定名称。 如果源类型未知,则可以省略该属性。@Bean@ConfigurationProperties@ConfigurationSpring中文文档

sourceMethodSpring中文文档

字符串Spring中文文档

贡献此组的方法的全名(包括括号和参数类型)(例如,带批注的方法的名称)。 如果源方法未知,则可以省略它。@ConfigurationProperties@BeanSpring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

组的全名。 此属性是必需的。Spring中文文档

typeSpring中文文档

字符串Spring中文文档

组的数据类型的类名。 例如,如果该组基于用 批注的类,则该属性将包含该类的完全限定名称。 如果它基于一个方法,它将是该方法的返回类型。 如果类型未知,则可以省略该属性。@ConfigurationProperties@BeanSpring中文文档

descriptionSpring中文文档

字符串Spring中文文档

可以向用户显示的组的简短说明。 如果没有可用的描述,则可以省略它。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

sourceTypeSpring中文文档

字符串Spring中文文档

贡献此组的源的类名。 例如,如果组基于用 批注的方法,则此属性将包含包含该方法的类的完全限定名称。 如果源类型未知,则可以省略该属性。@Bean@ConfigurationProperties@ConfigurationSpring中文文档

sourceMethodSpring中文文档

字符串Spring中文文档

贡献此组的方法的全名(包括括号和参数类型)(例如,带批注的方法的名称)。 如果源方法未知,则可以省略它。@ConfigurationProperties@BeanSpring中文文档

属性属性

数组中包含的 JSON 对象可以包含下表中描述的属性:propertiesSpring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

属性的全名。 名称采用小写的句点分隔形式(例如,)。 此属性是必需的。server.addressSpring中文文档

typeSpring中文文档

字符串Spring中文文档

属性的数据类型的完整签名(例如,),但也包括完整的泛型类型(例如 )。 您可以使用此属性来指导用户输入他们可以输入的值类型。 为了保持一致性,使用其包装器对应项指定基元的类型(例如,成为 )。 请注意,此类可能是一个复杂类型,当值绑定时,它会从 转换而来。 如果类型未知,则可以省略。java.lang.Stringjava.util.Map<java.lang.String,com.example.MyEnum>booleanjava.lang.BooleanStringSpring中文文档

descriptionSpring中文文档

字符串Spring中文文档

可以向用户显示的属性的简短说明。 如果没有可用的描述,则可以省略它。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

sourceTypeSpring中文文档

字符串Spring中文文档

提供此属性的源的类名。 例如,如果该属性来自用 批注的类,则此属性将包含该类的完全限定名称。 如果源类型未知,则可以省略。@ConfigurationPropertiesSpring中文文档

defaultValueSpring中文文档

对象Spring中文文档

默认值,如果未指定该属性,则使用该值。 如果属性的类型是数组,则它可以是值数组。 如果默认值未知,则可以省略该值。Spring中文文档

deprecationSpring中文文档

折旧Spring中文文档

指定是否弃用该属性。 如果该字段未弃用或该信息未知,则可以省略该字段。 下表提供了有关该属性的更多详细信息。deprecationSpring中文文档

每个元素的属性中包含的 JSON 对象可以包含以下属性:deprecationpropertiesSpring中文文档

名字 类型 目的

levelSpring中文文档

字符串Spring中文文档

弃用级别,可以是(默认值)或 . 当属性具有弃用级别时,它仍应绑定到环境中。 但是,当它具有弃用级别时,该属性将不再受管理且未绑定。warningerrorwarningerrorSpring中文文档

reasonSpring中文文档

字符串Spring中文文档

对该属性被弃用的原因的简短说明。 如果没有原因,可以省略。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

replacementSpring中文文档

字符串Spring中文文档

替换此已弃用属性的属性的全名。 如果没有替代此属性,则可以省略它。Spring中文文档

sinceSpring中文文档

字符串Spring中文文档

属性被弃用的版本。 可以省略。Spring中文文档

在 Spring Boot 1.3 之前,可以使用单个布尔属性来代替元素。 这仍以不推荐使用的方式受支持,不应再使用。 如果没有可用的原因和替换,则应设置一个空对象。deprecateddeprecationdeprecation

还可以通过将批注添加到公开已弃用属性的 getter 以声明方式指定弃用。 例如,假设该属性令人困惑,并已重命名为 。 以下示例演示如何处理这种情况:@DeprecatedConfigurationPropertymy.app.targetmy.app.nameSpring中文文档

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;
	}

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

前面的代码确保已弃用的属性仍然有效(委托给后台的属性)。 从公共 API 中删除 and 方法后,元数据中的自动弃用提示也会消失。 如果要保留提示,请添加具有弃用级别的手动元数据可确保用户仍会了解该属性。 当提供 a 时,这样做特别有用。namegetTargetsetTargeterrorreplacementSpring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

属性的全名。 名称采用小写的句点分隔形式(例如,)。 此属性是必需的。server.addressSpring中文文档

typeSpring中文文档

字符串Spring中文文档

属性的数据类型的完整签名(例如,),但也包括完整的泛型类型(例如 )。 您可以使用此属性来指导用户输入他们可以输入的值类型。 为了保持一致性,使用其包装器对应项指定基元的类型(例如,成为 )。 请注意,此类可能是一个复杂类型,当值绑定时,它会从 转换而来。 如果类型未知,则可以省略。java.lang.Stringjava.util.Map<java.lang.String,com.example.MyEnum>booleanjava.lang.BooleanStringSpring中文文档

descriptionSpring中文文档

字符串Spring中文文档

可以向用户显示的属性的简短说明。 如果没有可用的描述,则可以省略它。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

sourceTypeSpring中文文档

字符串Spring中文文档

提供此属性的源的类名。 例如,如果该属性来自用 批注的类,则此属性将包含该类的完全限定名称。 如果源类型未知,则可以省略。@ConfigurationPropertiesSpring中文文档

defaultValueSpring中文文档

对象Spring中文文档

默认值,如果未指定该属性,则使用该值。 如果属性的类型是数组,则它可以是值数组。 如果默认值未知,则可以省略该值。Spring中文文档

deprecationSpring中文文档

折旧Spring中文文档

指定是否弃用该属性。 如果该字段未弃用或该信息未知,则可以省略该字段。 下表提供了有关该属性的更多详细信息。deprecationSpring中文文档

名字 类型 目的

levelSpring中文文档

字符串Spring中文文档

弃用级别,可以是(默认值)或 . 当属性具有弃用级别时,它仍应绑定到环境中。 但是,当它具有弃用级别时,该属性将不再受管理且未绑定。warningerrorwarningerrorSpring中文文档

reasonSpring中文文档

字符串Spring中文文档

对该属性被弃用的原因的简短说明。 如果没有原因,可以省略。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

replacementSpring中文文档

字符串Spring中文文档

替换此已弃用属性的属性的全名。 如果没有替代此属性,则可以省略它。Spring中文文档

sinceSpring中文文档

字符串Spring中文文档

属性被弃用的版本。 可以省略。Spring中文文档

在 Spring Boot 1.3 之前,可以使用单个布尔属性来代替元素。 这仍以不推荐使用的方式受支持,不应再使用。 如果没有可用的原因和替换,则应设置一个空对象。deprecateddeprecationdeprecation
无法设置 . 始终假定为,因为代码仍在处理该属性。levelwarning

提示属性

数组中包含的 JSON 对象可以包含下表中显示的属性:hintsSpring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

此提示所引用的属性的全名。 名称采用小写的句点分隔形式(如 )。 如果该属性引用映射(如 ),则提示将应用于映射 () 的或映射的值 ()。 此属性是必需的。spring.mvc.servlet.pathsystem.contextssystem.contexts.keyssystem.contexts.valuesSpring中文文档

valuesSpring中文文档

值提示[]Spring中文文档

对象定义的有效值列表(如下表所述)。 每个条目都定义值,并且可能具有说明。ValueHintSpring中文文档

providersSpring中文文档

值提供程序[]Spring中文文档

由对象定义的提供程序列表(在本文档后面介绍)。 每个条目定义提供程序的名称及其参数(如果有)。ValueProviderSpring中文文档

每个元素的属性中包含的 JSON 对象可以包含下表中描述的属性:valueshintSpring中文文档

名字 类型 目的

valueSpring中文文档

对象Spring中文文档

提示所引用的元素的有效值。 如果属性的类型是数组,则它也可以是值数组。 此属性是必需的。Spring中文文档

descriptionSpring中文文档

字符串Spring中文文档

可以向用户显示的值的简短说明。 如果没有可用的描述,则可以省略它。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

每个元素的属性中包含的 JSON 对象可以包含下表中描述的属性:providershintSpring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

用于为提示所引用的元素提供其他内容帮助的提供程序的名称。Spring中文文档

parametersSpring中文文档

JSON 对象Spring中文文档

提供程序支持的任何其他参数(有关详细信息,请查看提供程序的文档)。Spring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

此提示所引用的属性的全名。 名称采用小写的句点分隔形式(如 )。 如果该属性引用映射(如 ),则提示将应用于映射 () 的或映射的值 ()。 此属性是必需的。spring.mvc.servlet.pathsystem.contextssystem.contexts.keyssystem.contexts.valuesSpring中文文档

valuesSpring中文文档

值提示[]Spring中文文档

对象定义的有效值列表(如下表所述)。 每个条目都定义值,并且可能具有说明。ValueHintSpring中文文档

providersSpring中文文档

值提供程序[]Spring中文文档

由对象定义的提供程序列表(在本文档后面介绍)。 每个条目定义提供程序的名称及其参数(如果有)。ValueProviderSpring中文文档

名字 类型 目的

valueSpring中文文档

对象Spring中文文档

提示所引用的元素的有效值。 如果属性的类型是数组,则它也可以是值数组。 此属性是必需的。Spring中文文档

descriptionSpring中文文档

字符串Spring中文文档

可以向用户显示的值的简短说明。 如果没有可用的描述,则可以省略它。 建议描述是简短的段落,第一行提供简明扼要的摘要。 描述中的最后一行应以句点 () 结尾。.Spring中文文档

名字 类型 目的

nameSpring中文文档

字符串Spring中文文档

用于为提示所引用的元素提供其他内容帮助的提供程序的名称。Spring中文文档

parametersSpring中文文档

JSON 对象Spring中文文档

提供程序支持的任何其他参数(有关详细信息,请查看提供程序的文档)。Spring中文文档

重复的元数据项

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