此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1! |
配置元数据文件位于 jar 下的 jar 中。
它们使用 JSON 格式,其中项目分类在“组”或“属性”下,其他值提示分类在“提示”下,如以下示例所示:META-INF/spring-configuration-metadata.json
{"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.port
server.address
application.properties
application.yaml
-
Properties
-
YAML
server.port=9090
server.address=127.0.0.1
server:
port: 9090
address: 127.0.0.1
“组”是更高级别的项目,它们本身不指定值,而是为属性提供上下文分组。
例如,和 属性是组的一部分。server.port
server.address
server
并不要求每个“属性”都有一个“组”。 某些属性可能以自身权利存在。 |
最后,“提示”是用于帮助用户配置给定属性的附加信息。
例如,当开发人员配置属性时,工具可以使用提示为 、 、 、 和 值提供一些自动完成帮助。spring.jpa.hibernate.ddl-auto
none
validate
update
create
create-drop
并不要求每个“属性”都有一个“组”。 某些属性可能以自身权利存在。 |
组属性
数组中包含的 JSON 对象可以包含下表中显示的属性:groups
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
组的全名。 此属性是必需的。 |
|
字符串 |
组的数据类型的类名。
例如,如果该组基于用 批注的类,则该属性将包含该类的完全限定名称。
如果它基于一个方法,它将是该方法的返回类型。
如果类型未知,则可以省略该属性。 |
|
字符串 |
可以向用户显示的组的简短说明。
如果没有可用的描述,则可以省略它。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
|
字符串 |
贡献此组的源的类名。
例如,如果组基于用 批注的方法,则此属性将包含包含该方法的类的完全限定名称。
如果源类型未知,则可以省略该属性。 |
|
字符串 |
贡献此组的方法的全名(包括括号和参数类型)(例如,带批注的方法的名称)。
如果源方法未知,则可以省略它。 |
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
组的全名。 此属性是必需的。 |
|
字符串 |
组的数据类型的类名。
例如,如果该组基于用 批注的类,则该属性将包含该类的完全限定名称。
如果它基于一个方法,它将是该方法的返回类型。
如果类型未知,则可以省略该属性。 |
|
字符串 |
可以向用户显示的组的简短说明。
如果没有可用的描述,则可以省略它。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
|
字符串 |
贡献此组的源的类名。
例如,如果组基于用 批注的方法,则此属性将包含包含该方法的类的完全限定名称。
如果源类型未知,则可以省略该属性。 |
|
字符串 |
贡献此组的方法的全名(包括括号和参数类型)(例如,带批注的方法的名称)。
如果源方法未知,则可以省略它。 |
属性属性
数组中包含的 JSON 对象可以包含下表中描述的属性:properties
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
属性的全名。
名称采用小写的句点分隔形式(例如,)。
此属性是必需的。 |
|
字符串 |
属性的数据类型的完整签名(例如,),但也包括完整的泛型类型(例如 )。
您可以使用此属性来指导用户输入他们可以输入的值类型。
为了保持一致性,使用其包装器对应项指定基元的类型(例如,成为 )。
请注意,此类可能是一个复杂类型,当值绑定时,它会从 转换而来。
如果类型未知,则可以省略。 |
|
字符串 |
可以向用户显示的属性的简短说明。
如果没有可用的描述,则可以省略它。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
|
字符串 |
提供此属性的源的类名。
例如,如果该属性来自用 批注的类,则此属性将包含该类的完全限定名称。
如果源类型未知,则可以省略。 |
|
对象 |
默认值,如果未指定该属性,则使用该值。 如果属性的类型是数组,则它可以是值数组。 如果默认值未知,则可以省略该值。 |
|
折旧 |
指定是否弃用该属性。
如果该字段未弃用或该信息未知,则可以省略该字段。
下表提供了有关该属性的更多详细信息。 |
每个元素的属性中包含的 JSON 对象可以包含以下属性:deprecation
properties
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
弃用级别,可以是(默认值)或 .
当属性具有弃用级别时,它仍应绑定到环境中。
但是,当它具有弃用级别时,该属性将不再受管理且未绑定。 |
|
字符串 |
对该属性被弃用的原因的简短说明。
如果没有原因,可以省略。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
|
字符串 |
替换此已弃用属性的属性的全名。 如果没有替代此属性,则可以省略它。 |
|
字符串 |
属性被弃用的版本。 可以省略。 |
在 Spring Boot 1.3 之前,可以使用单个布尔属性来代替元素。
这仍以不推荐使用的方式受支持,不应再使用。
如果没有可用的原因和替换,则应设置一个空对象。deprecated deprecation deprecation |
还可以通过将批注添加到公开已弃用属性的 getter 以声明方式指定弃用。
例如,假设该属性令人困惑,并已重命名为 。
以下示例演示如何处理这种情况:@DeprecatedConfigurationProperty
my.app.target
my.app.name
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 |
前面的代码确保已弃用的属性仍然有效(委托给后台的属性)。
从公共 API 中删除 and 方法后,元数据中的自动弃用提示也会消失。
如果要保留提示,请添加具有弃用级别的手动元数据可确保用户仍会了解该属性。
当提供 a 时,这样做特别有用。name
getTarget
setTarget
error
replacement
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
属性的全名。
名称采用小写的句点分隔形式(例如,)。
此属性是必需的。 |
|
字符串 |
属性的数据类型的完整签名(例如,),但也包括完整的泛型类型(例如 )。
您可以使用此属性来指导用户输入他们可以输入的值类型。
为了保持一致性,使用其包装器对应项指定基元的类型(例如,成为 )。
请注意,此类可能是一个复杂类型,当值绑定时,它会从 转换而来。
如果类型未知,则可以省略。 |
|
字符串 |
可以向用户显示的属性的简短说明。
如果没有可用的描述,则可以省略它。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
|
字符串 |
提供此属性的源的类名。
例如,如果该属性来自用 批注的类,则此属性将包含该类的完全限定名称。
如果源类型未知,则可以省略。 |
|
对象 |
默认值,如果未指定该属性,则使用该值。 如果属性的类型是数组,则它可以是值数组。 如果默认值未知,则可以省略该值。 |
|
折旧 |
指定是否弃用该属性。
如果该字段未弃用或该信息未知,则可以省略该字段。
下表提供了有关该属性的更多详细信息。 |
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
弃用级别,可以是(默认值)或 .
当属性具有弃用级别时,它仍应绑定到环境中。
但是,当它具有弃用级别时,该属性将不再受管理且未绑定。 |
|
字符串 |
对该属性被弃用的原因的简短说明。
如果没有原因,可以省略。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
|
字符串 |
替换此已弃用属性的属性的全名。 如果没有替代此属性,则可以省略它。 |
|
字符串 |
属性被弃用的版本。 可以省略。 |
在 Spring Boot 1.3 之前,可以使用单个布尔属性来代替元素。
这仍以不推荐使用的方式受支持,不应再使用。
如果没有可用的原因和替换,则应设置一个空对象。deprecated deprecation deprecation |
无法设置 . 始终假定为,因为代码仍在处理该属性。level warning |
提示属性
数组中包含的 JSON 对象可以包含下表中显示的属性:hints
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
此提示所引用的属性的全名。
名称采用小写的句点分隔形式(如 )。
如果该属性引用映射(如 ),则提示将应用于映射 () 的键或映射的值 ()。
此属性是必需的。 |
|
值提示[] |
对象定义的有效值列表(如下表所述)。
每个条目都定义值,并且可能具有说明。 |
|
值提供程序[] |
由对象定义的提供程序列表(在本文档后面介绍)。
每个条目定义提供程序的名称及其参数(如果有)。 |
每个元素的属性中包含的 JSON 对象可以包含下表中描述的属性:values
hint
名字 | 类型 | 目的 |
---|---|---|
|
对象 |
提示所引用的元素的有效值。 如果属性的类型是数组,则它也可以是值数组。 此属性是必需的。 |
|
字符串 |
可以向用户显示的值的简短说明。
如果没有可用的描述,则可以省略它。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
每个元素的属性中包含的 JSON 对象可以包含下表中描述的属性:providers
hint
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
用于为提示所引用的元素提供其他内容帮助的提供程序的名称。 |
|
JSON 对象 |
提供程序支持的任何其他参数(有关详细信息,请查看提供程序的文档)。 |
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
此提示所引用的属性的全名。
名称采用小写的句点分隔形式(如 )。
如果该属性引用映射(如 ),则提示将应用于映射 () 的键或映射的值 ()。
此属性是必需的。 |
|
值提示[] |
对象定义的有效值列表(如下表所述)。
每个条目都定义值,并且可能具有说明。 |
|
值提供程序[] |
由对象定义的提供程序列表(在本文档后面介绍)。
每个条目定义提供程序的名称及其参数(如果有)。 |
名字 | 类型 | 目的 |
---|---|---|
|
对象 |
提示所引用的元素的有效值。 如果属性的类型是数组,则它也可以是值数组。 此属性是必需的。 |
|
字符串 |
可以向用户显示的值的简短说明。
如果没有可用的描述,则可以省略它。
建议描述是简短的段落,第一行提供简明扼要的摘要。
描述中的最后一行应以句点 () 结尾。 |
名字 | 类型 | 目的 |
---|---|---|
|
字符串 |
用于为提示所引用的元素提供其他内容帮助的提供程序的名称。 |
|
JSON 对象 |
提供程序支持的任何其他参数(有关详细信息,请查看提供程序的文档)。 |
重复的元数据项
具有相同“属性”和“组”名称的对象可以在元数据文件中多次出现。 例如,可以将两个单独的类绑定到同一前缀,每个类都可能具有重叠的属性名称。 虽然在元数据中多次出现的相同名称不应常见,但元数据的使用者应注意确保它们支持它。