元数据格式
配置元数据文件位于元步兵/spring-configuration-metadata.json. 它们使用JSON格式,将项目分为“组”或“属性”,附加值提示归为“提示”,忽略的项目归为“忽略”,如下示例所示:
{"groups": [
{
"name": "server",
"type": "org.springframework.boot.web.server.autoconfigure.ServerProperties",
"sourceType": "org.springframework.boot.web.server.autoconfigure.ServerProperties"
},
{
"name": "spring.jpa.hibernate",
"type": "org.springframework.boot.jpa.autoconfigure.JpaProperties$Hibernate",
"sourceType": "org.springframework.boot.jpa.autoconfigure.JpaProperties",
"sourceMethod": "getHibernate()"
}
...
],"properties": [
{
"name": "server.port",
"type": "java.lang.Integer",
"sourceType": "org.springframework.boot.web.server.autoconfigure.ServerProperties"
},
{
"name": "server.address",
"type": "java.net.InetAddress",
"sourceType": "org.springframework.boot.web.server.autoconfigure.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.jpa.autoconfigure.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."
}
]
}
...
],"ignored": {
"properties": [
{
"name": "server.ignored"
}
...
]
}}
每个“属性”都是用户用指定值指定的配置项。 例如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属性是服务器群。
| 并非要求每个“财产”都有“群体”。有些财产可能独立存在。 |
“提示”是用于帮助用户配置特定属性的额外信息。
例如,当开发者配置spring.jpa.hibernate.ddl-auto属性,一个工具可以利用提示为没有,驗證,更新,创造和创作-丢弃值。
最后,“忽略”是指那些被故意忽略的项目。 本节内容通常来自额外的元数据。
组属性
包含在组数组可以包含下表中显示的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
字符串 |
这是该团体的全名。 这一属性是必须的。 |
|
字符串 |
该组数据类型的类名称。
例如,如果该群基于一个注释为 |
|
字符串 |
可以向用户展示的小组简短描述。
如果没有描述,可以省略。
建议描述简短,第一行提供简明的总结。
描述的最后一行应以句号结尾( |
|
字符串 |
贡献该组的来源类别名称。
例如,如果该群基于 |
|
字符串 |
贡献该组的方法的全名(包括括号和参数类型)(例如,一个 |
属性
包含在性能array 可以包含下表中描述的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
字符串 |
房产的全名。
名称采用小写的句点分隔形式(例如, |
|
字符串 |
属性数据类型的完整签名(例如, |
|
字符串 |
可以向用户展示的房产简短描述。
如果没有描述,可以省略。
建议描述简短,第一行提供简明的总结。
描述的最后一行应以句号结尾( |
|
字符串 |
贡献该属性的源的类名。
例如,如果该属性来自一个注释为 |
|
对象 |
默认值,如果未指定属性,则使用默认值。 如果属性类型是数组,则可以是值数组。 如果默认值未知,则可以省略。 |
|
折旧 |
请明确该属性是否已被弃用。
如果该字段未被弃用或该信息未知,则可省略。
下表提供了更多关于 |
包含在折旧每个属性性能元素可以包含以下属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
字符串 |
弃用级别可以是以下两种 |
|
字符串 |
简要说明该房产被废弃的原因。
如果没有理由,可以省略。
建议描述简短,第一行提供简明的总结。
描述的最后一行应以句号结尾( |
|
字符串 |
替换该弃用财产的财产的全名。 如果该房产没有替代品,可能会被省略。 |
|
字符串 |
即该财产被弃用的版本。 可以省略。 |
在 Spring Boot 1.3 之前,一首单曲荒废的可以使用布尔属性代替折旧元素。
该功能仍以被弃用的方式支持,不应再使用。
如果没有理由和替代,则空折旧对象应该被设置。 |
废弃也可以在代码中声明式地指定,通过添加@DeprecatedConfigurationProperty对获取器进行注释,暴露弃用性质。
例如,假设my.app.target该地产令人困惑,因此更名为my.app.name.
以下示例展示了如何处理这种情况:
-
Java
-
Kotlin
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", since = "1.2.0")
public String getTarget() {
return this.name;
}
@Deprecated
public void setTarget(String target) {
this.name = target;
}
}
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty
@ConfigurationProperties("my.app")
class MyProperties(val name: String?) {
var target: String? = null
@Deprecated("") @DeprecatedConfigurationProperty(replacement = "my.app.name", since = "1.2.0") get
@Deprecated("") set
}
没有办法设置水平.警告总是假设,因为代码仍在处理该属性。 |
上述代码确保被弃用属性仍然有效(委托给名称幕后财产)。
一旦获取目标和setTarget方法可以从你的公共API中移除,元数据中的自动弃用提示也会消失。
如果你想保持提示,可以手动添加带有错误弃用级别确保用户仍能了解该属性。
当更换提供。
提示属性
包含在提示数组可以包含下表中显示的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
字符串 |
这是该暗示所指物业的全名。
名称采用小写的句号分隔形式(例如 |
|
价值提示[] |
由 |
|
ValueProvider[] |
由 |
包含在值每个属性提示元素可以包含下表中描述的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
对象 |
提示所指元素的有效值。 如果属性的类型是数组,也可以是数组。 这一属性是必须的。 |
|
字符串 |
简要描述可以向用户展示的价值。
如果没有描述,可以省略。
建议描述简短,第一行提供简明的总结。
描述的最后一行应以句号结尾( |
包含在提供商每个属性提示元素可以包含下表中描述的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
字符串 |
提供额外内容支持的服务提供者名称。 |
|
JSON 对象 |
任何提供者支持的额外参数(详情请查阅提供者文档)。 |
被忽视的属性
这忽视对象可以包含下表中显示的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
物品忽略[] |
由 ItemIgnore 对象定义的忽略属性列表(见下表描述)。每个条目定义了被忽略属性的名称。 |
包含在性能每个属性忽视元素可以包含下表中描述的属性:
| 名称 | 类型 | 目的 |
|---|---|---|
|
字符串 |
忽略房产的全名。
名称采用小写的句号分隔形式(例如 |
重复元数据项
具有相同“属性”和“组”名称的对象可以在元数据文件中多次出现。 例如,你可以将两个独立的类绑定到同一个前缀上,每个类的属性名称可能重叠。 虽然同一个名字在元数据中多次出现不应常见,但元数据的消费者应确保支持这些内容。