効果
Idea などの開発ツールを使用する場合、構成ファイルにプレフィックスを入力すると、対応する完了プロンプトが表示され、開発者は対応するプロパティを簡単に構成できます。効果のスクリーンショットは次のとおりです。
メタデータの説明
spring-configuration-metadata.json
これらのヒントは、ソース データ ファイルおよびSpring 自動構成仕様のコンテンツの定義から得られますadditional-spring-configuration-metadata.json
。仕様が固定されていると、開発ツールは対応する json ソース データ ファイルから対応する情報完了プロンプトを読み込むことができるため、開発プロセスがより使いやすく便利になります。
spring-configuration-metadata.json
プラグインによってspring-boot-configuration-processor
自動的に生成されるため、additional-spring-configuration-metadata.json
追加の構成には手動のメンテナンスが必要です。この追加の構成ファイルは、コンパイルのたびに自動生成が上書きされるために作成されます。自動生成は、プラグインによってロードされて自動生成される@ConfigurationProperties
前に、定義された Java クラスと結合され、アノテーションで変更される必要があります。spring-boot-configuration-processor
spring-configuration-metadata.json
添付ファイル: SpringBoot 自動構成に関するその他のいくつかの主要ファイル
構成ファイル:spring.factories
構成ファイル:spring-configuration-metadata.json
およびadditional-spring-configuration-metadata.json
構成ファイル:spring-autoconfigure-metadata.properties
プラグイン:spring-boot-configuration-processor
プラグイン:spring-boot-autoconfigure-processor
DeferredImportSelector セレクター:AutoConfigurationImportSelector
開発と実装
上記の効果を実現するための具体的なコード例を次に示します。
1. Java 構成クラスを定義する
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 测试配置类
*
* @author shanhy
*/
@Data
@Component
@ConfigurationProperties(prefix = "shanhy.test")
public class TestProperties {
/**
* 唯一ID
*/
private int id = 100;
/**
* 名称
*/
private String name;
/**
* 标志位
*/
private boolean flag = true;
}
属性上の Java アノテーションは最終的にメタデータ ファイルに自動生成されるためspring-configuration-metadata.json
、アノテーションの記述は厳密に追加してください。
2. プラグインの依存関係を追加する
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
このプラグインは、メタデータ ファイルのコンテンツを自動的に生成します。プラグインを使用してメタデータを自動的に生成する必要はないが、独自に定義した属性のメタデータを構成したい場合は、自分でメンテナンスできます
resources/META-INF/additional-spring-configuration-metadata.json
。
3. 結果をコンパイルして検証する
Mavan を使用してメタデータ ファイルをコンパイルおよび生成し、プロパティで結果を確認します。
追加されたカスタム メタデータを確認するために、resources/META-INF/additional-spring-configuration-metadata.json
ファイルにカスタム構成を追加しました。
{
"properties": [
{
"name": "shanhy.test.additional-content",
"type": "java.lang.Boolean",
"description": "附加内容"
}
]
}
(終わり)