元数据格式
配置元数据文件位于 jar 包内的 META-INF/spring-configuration-metadata.json
下。它们使用 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."
}
]
}
]}
每个“属性”都是用户使用给定值指定的配置项。例如,server.port
和 server.address
可以在您的 application.properties
/application.yaml
中指定,如下所示
-
属性
-
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
值提供一些自动完成帮助。
组属性
groups
数组中包含的 JSON 对象可以包含下表所示的属性
名称 | 类型 | 用途 |
---|---|---|
|
字符串 |
组的完整名称。此属性是必需的。 |
|
字符串 |
组数据类型的类名。例如,如果组基于用 |
|
字符串 |
可以显示给用户的组的简短描述。如果不可用,则可以省略描述。建议描述为简短的段落,第一行提供简洁的摘要。描述中的最后一行应以句点 ( |
|
字符串 |
贡献此分组的源代码的类名。例如,如果该分组基于用 |
|
字符串 |
贡献此分组的方法的全名(包括括号和参数类型)(例如, |
属性属性
properties
数组中包含的JSON对象可以包含下表中描述的属性
名称 | 类型 | 用途 |
---|---|---|
|
字符串 |
属性的全名。名称采用小写字母点分隔的形式(例如, |
|
字符串 |
属性的数据类型的完整签名(例如, |
|
字符串 |
可以显示给用户的属性的简短描述。如果没有可用的描述,则可以省略。建议描述为简短的段落,第一行提供简洁的摘要。描述的最后一行应以句点( |
|
字符串 |
贡献此属性的源代码的类名。例如,如果该属性来自用 |
|
对象 |
默认值,如果未指定属性,则使用该值。如果属性的类型是数组,则它可以是值数组。如果默认值未知,则可以省略。 |
|
弃用 |
指定属性是否已弃用。如果字段未弃用或如果该信息未知,则可以省略。下表提供了有关 |
每个properties
元素的deprecation
属性中包含的JSON对象可以包含以下属性
名称 | 类型 | 用途 |
---|---|---|
|
字符串 |
弃用级别,可以是 |
|
字符串 |
属性弃用的简短原因描述。如果没有可用的原因,则可以省略。建议描述为简短的段落,第一行提供简洁的摘要。描述的最后一行应以句点( |
|
字符串 |
替换此弃用属性的属性的全名。如果此属性没有替换项,则可以省略。 |
|
字符串 |
属性被弃用的版本。可以省略。 |
在 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 ,因为代码仍在处理该属性。 |
前面的代码确保弃用属性仍然有效(在幕后委托给name
属性)。一旦可以从公共 API 中删除getTarget
和setTarget
方法,元数据中的自动弃用提示也将消失。如果要保留提示,则添加具有error
弃用级别的手动元数据可确保用户仍然了解该属性。当提供replacement
时,这样做特别有用。
提示属性
hints
数组中包含的JSON对象可以包含下表中显示的属性
名称 | 类型 | 用途 |
---|---|---|
|
字符串 |
此提示引用的属性的全名。名称采用小写字母点分隔的形式(例如, |
|
ValueHint[] |
根据 |
|
ValueProvider[] |
根据 |
每个hint
元素的values
属性中包含的JSON对象可以包含下表中描述的属性
名称 | 类型 | 用途 |
---|---|---|
|
对象 |
提示引用的元素的有效值。如果属性的类型是数组,则它也可以是值数组。此属性是必需的。 |
|
字符串 |
可以显示给用户的值的简短描述。如果没有可用的描述,则可以省略。建议描述为简短的段落,第一行提供简洁的摘要。描述的最后一行应以句点( |
每个hint
元素的providers
属性中包含的JSON对象可以包含下表中描述的属性
名称 | 类型 | 用途 |
---|---|---|
|
字符串 |
提供程序的名称,用于为提示引用的元素提供其他内容帮助。 |
|
JSON对象 |
提供程序支持的任何其他参数(有关更多详细信息,请查看提供程序的文档)。 |