メタデータ形式
構成メタデータファイルは META-INF/spring-configuration-metadata.json
の jar 内にあります。次の例に示すように、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 オブジェクトには、次の表に示す属性を含めることができます。
名前 | タイプ | 目的 |
---|---|---|
| String | グループのフルネーム。この属性は必須です。 |
| String | グループのデータ型のクラス名。例: グループが |
| String | ユーザーに表示できるグループの簡単な説明。説明がない場合は、省略できます。説明は短いパラグラフにすることをお勧めします。最初の行は簡潔な要約を提供します。説明の最後の行はピリオド( |
| String | このグループに貢献したソースのクラス名。例: グループが |
| String | このグループに貢献したメソッドの完全な名前 (括弧と引数の型を含む) (たとえば、 |
プロパティ属性
properties
配列に含まれる JSON オブジェクトには、次の表で説明する属性を含めることができます。
名前 | タイプ | 目的 |
---|---|---|
| String | プロパティの完全な名前。名前は小文字のピリオド区切り形式です(たとえば、 |
| String | プロパティのデータ型の完全なシグネチャー (例: |
| String | ユーザーに表示できるプロパティの簡単な説明。説明がない場合は、省略できます。説明は短いパラグラフにすることをお勧めします。最初の行は簡潔な要約を提供します。説明の最後の行はピリオド( |
| String | このプロパティを提供したソースのクラス名。例: プロパティが |
| オブジェクト | デフォルト値。プロパティが指定されていない場合に使用されます。プロパティの型が配列の場合、値の配列にすることができます。デフォルト値が不明な場合、省略できます。 |
| 使用すべきではない | プロパティが廃止されるかどうかを指定します。フィールドが非推奨でない場合、またはその情報が不明な場合は、省略できます。次の表に、 |
各 properties
要素の deprecation
属性に含まれる JSON オブジェクトには、次の属性を含めることができます。
名前 | タイプ | 目的 |
---|---|---|
| String | 非推奨のレベル。 |
| String | プロパティが廃止された理由の簡単な説明。理由がない場合は、省略できます。説明は短いパラグラフにすることをお勧めします。最初の行は簡潔な要約を提供します。説明の最後の行はピリオド( |
| String | この廃止されたプロパティを置き換えるプロパティの完全な名前。このプロパティの代替がない場合は、省略できます。 |
| String | プロパティが非推奨になったバージョン。省略可能です。 |
Spring Boot 1.3 以前は、deprecation 要素の代わりに単一の deprecated ブール属性を使用できました。これは現在も非推奨の方法でサポートされており、今後は使用しないでください。理由と置換がない場合は、空の deprecation オブジェクトを設定する必要があります。 |
非推奨は、非推奨のプロパティを公開する getter に @DeprecatedConfigurationProperty
(Javadoc) アノテーションを追加することで、コード内で宣言的に指定することもできます。たとえば、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
プロパティに委譲します)。getTarget
および setTarget
メソッドがパブリック API から削除されると、メタデータの自動非推奨ヒントもなくなります。ヒントを保持したい場合は、error
非推奨レベルの手動メタデータを追加することで、ユーザーにそのプロパティについての情報を確実に提供できます。これは、replacement
が提供されている場合に特に役立ちます。
ヒント属性
hints
配列に含まれる JSON オブジェクトには、次の表に示す属性を含めることができます。
名前 | タイプ | 目的 |
---|---|---|
| String | このヒントが参照するプロパティの完全な名前。名前は小文字のピリオド区切り形式です( |
| ValueHint[] |
|
| ValueProvider[] |
|
各 hint
要素の values
属性に含まれる JSON オブジェクトには、次の表で説明する属性を含めることができます。
名前 | タイプ | 目的 |
---|---|---|
| オブジェクト | ヒントが参照する要素の有効な値。プロパティの型が配列の場合、値の配列にすることもできます。この属性は必須です。 |
| String | ユーザーに表示できる値の簡単な説明。説明がない場合は、省略できます。説明は短いパラグラフにすることをお勧めします。最初の行は簡潔な要約を提供します。説明の最後の行はピリオド( |
各 hint
要素の providers
属性に含まれる JSON オブジェクトには、次の表で説明する属性を含めることができます。
名前 | タイプ | 目的 |
---|---|---|
| String | ヒントが参照する要素に追加のコンテンツ支援を提供するために使用するプロバイダーの名前。 |
| JSON オブジェクト | プロバイダーがサポートする追加パラメーター(詳細については、プロバイダーのドキュメントを確認してください)。 |