Spring Cloud Config Server には次の利点があります。
外部構成用の HTTP リソースベースの API (名前と値のペアまたは同等の YAML コンテンツ)
プロパティ値の暗号化と復号化 (対称または非対称)
@EnableConfigServer
を使用して Spring Boot アプリケーションに簡単に埋め込み可能
特に Spring アプリケーションの場合、Spring Cloud Config Client を使用すると次のことが可能になります。
Config Server にバインドし、リモート プロパティ ソースを使用して Spring Environment
初期化します。
プロパティ値 (対称または非対称) を暗号化および復号化します。
構成が変更されたときに再初期化する必要がある Spring @Beans
の@RefreshScope
。
管理エンドポイントを使用します。
/env
Environment
更新し、 @ConfigurationProperties
とログ レベルを再バインドします。
/refresh
@RefreshScope
Bean をリフレッシュします。
/restart
(デフォルトでは無効)。
/pause
および/resume
Lifecycle
メソッド ( ApplicationContext
のstop()
およびstart()
を呼び出すためのものです。
ブートストラップ アプリケーション コンテキスト: 何でもできるようにトレーニングできるメイン アプリケーションの親コンテキスト (デフォルトでは、構成サーバーにバインドされ、プロパティ値を復号化します)。
サンプル アプリケーションはここで見つけることができます。これは Spring Boot アプリケーションであるため、通常のメカニズム (たとえば、 mvn spring-boot:run
) を使用して実行できます。実行すると、 http://localhost:8888
(構成可能なデフォルト) で構成サーバーが検索されるため、サーバーを実行してすべてが連携していることを確認することもできます。
このサンプルには、構成サーバーも同じ JVM (別のポートで) で起動されるテスト ケースがあり、テストでは git 構成リポジトリの環境プロパティが存在することをアサートします。構成サーバーの場所を変更するには、 bootstrap.yml
(またはシステム プロパティやその他の場所) でspring.cloud.config.uri
設定します。
テスト ケースには、同じ方法でサーバーを実行するmain()
メソッドが含まれているため (そのポートのログを監視します)、システム全体を 1 つのプロセスで実行して、それを試すことができます (たとえば、 main()
IDE のメソッド)。 main()
メソッドは git リポジトリの作業ディレクトリとしてtarget/config
使用するため、そこでローカルに変更を加え、実行中のアプリに反映されることを確認できます。次の例は、テスト ケースをいじるセッションを示しています。
$カールローカルホスト:8080/env/sample 私のテスト $ vi target/config/mytest.properties .. 「sample」の値を変更し、必要に応じてコミットします $カール -X POSTローカルホスト:8080/リフレッシュ ["サンプル"] $カールローカルホスト:8080/env/sample サンプル値
更新エンドポイントは、「sample」プロパティが変更されたことを報告します。
ソースをビルドするには、JDK 17 をインストールする必要があります。
Spring Cloud はほとんどのビルド関連アクティビティに Maven を使用しており、興味のあるプロジェクトのクローンを作成して次のように入力するだけで、すぐに作業を開始できるはずです。
$ ./mvnw インストール
注記 | Maven (>=3.3.3) を自分でインストールし、以下の例の./mvnw の代わりにmvn コマンドを実行することもできます。その場合、ローカルの Maven 設定に Spring プレリリース アーティファクトのリポジトリ宣言が含まれていない場合は、 -P spring を追加する必要がある場合もあります。 |
注記 | MAVEN_OPTS 環境変数に-Xmx512m -XX:MaxPermSize=128m のような値を設定して、Maven で使用できるメモリの量を増やす必要がある場合があることに注意してください。これを.mvn 構成でカバーしようとしているため、ビルドを成功させるためにこれを行う必要がある場合は、チケットを発行して設定をソース管理に追加してください。 |
テストにミドルウェア (Redis) を必要とするプロジェクトでは、通常、[Docker](https://www.docker.com/get-started) のローカル インスタンスがインストールされ、実行されている必要があります。
spring-cloud-build モジュールには「docs」プロファイルがあり、これをオンにするとmodules/ROOT/
から Antora を使用して asciidoc ソースをビルドしようとします。
そのプロセスの一環として、 docs/src/main/asciidoc/README.adoc
を検索し、すべてのインクルードをロードして処理しますが、解析やレンダリングは行わず、 ${main.basedir}
にコピーするだけです (デフォルトは${basedir}
、つまりプロジェクトのルート)。 README に変更がある場合は、Maven ビルド後に正しい場所に変更されたファイルとして表示されます。それをコミットして変更をプッシュするだけです。
IDE の設定がない場合は、コードを操作するときに Spring Tools Suite または Eclipse を使用することをお勧めします。 Maven サポートには m2eclipse eclipse プラグインを使用します。他の IDE やツールも、Maven 3.3.3 以降を使用している限り問題なく動作します。
Spring Cloud プロジェクトでは、Spring マイルストーンとスナップショット リポジトリを解決するために「spring」Maven プロファイルをアクティブ化する必要があります。好みの IDE を使用してこのプロファイルをアクティブに設定してください。そうしないと、ビルド エラーが発生する可能性があります。
Eclipse を使用する場合は、m2eclipse eclipse プラグインをお勧めします。 m2eclipse をまだインストールしていない場合は、「eclipse マーケットプレイス」から入手できます。
注記 | m2e の古いバージョンは Maven 3.3 をサポートしていないため、プロジェクトを Eclipse にインポートしたら、プロジェクトに適切なプロファイルを使用するように m2eclipse に指示する必要もあります。プロジェクト内の POM に関連するさまざまなエラーが表示される場合は、インストールが最新であることを確認してください。 m2e をアップグレードできない場合は、「spring」プロファイルをsettings.xml に追加します。あるいは、親 pom の「spring」プロファイルからリポジトリ設定をsettings.xml にコピーすることもできます。 |
m2eclipse を使用したくない場合は、次のコマンドを使用して Eclipse プロジェクトのメタデータを生成できます。
$ ./mvnw 日食:日食
生成された Eclipse プロジェクトは、 file
メニューからimport existing projects
を選択することでインポートできます。
「不正なキー サイズ」による例外が発生し、Sun の JDK を使用している場合は、Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction ポリシー ファイルをインストールする必要があります。詳細については、次のリンクを参照してください。
Java 6 JCE
Java 7 JCE
Java 8 JCE
使用する JRE/JDK x64/x86 のバージョンに応じて、JCE ファイルをJDK/jre/lib/security
フォルダーに抽出します。
Spring Cloud は、制限のない Apache 2.0 ライセンスの下でリリースされ、非常に標準的な Github 開発プロセスに従い、問題に対して Github トラッカーを使用し、プル リクエストをメインにマージします。些細なことでも投稿したい場合は、以下のガイドラインに従ってください。
重要なパッチやプル リクエストを受け入れる前に、コントリビューター ライセンス契約に署名していただく必要があります。寄稿者の同意書に署名しても、メイン リポジトリへのコミット権限が誰にも付与されるわけではありませんが、寄稿を受け入れることができ、寄稿を受け入れた場合には著者のクレジットが得られることを意味します。アクティブなコントリビューターは、コア チームに参加するよう求められ、プル リクエストをマージする機能が与えられる場合があります。
このプロジェクトは、貢献者規約の行動規範に準拠しています。参加することにより、この規範を遵守することが期待されます。容認できない行為は [email protected] に報告してください。
これらはいずれもプル リクエストに必須ではありませんが、すべて役に立ちます。元のプル リクエストの後、マージ前に追加することもできます。
Spring Framework のコード形式規則を使用します。 Eclipse を使用している場合は、Spring Cloud Build プロジェクトからeclipse-code-formatter.xml
ファイルを使用してフォーマッタ設定をインポートできます。 IntelliJ を使用している場合は、Eclipse コード フォーマッタ プラグインを使用して同じファイルをインポートできます。
すべての新しい.java
ファイルに、少なくとも自分を識別する@author
タグを含む単純な Javadoc クラス コメントが含まれていることを確認してください。また、できればクラスの目的に関する少なくとも段落を含めてください。
ASF ライセンス ヘッダー コメントをすべての新しい.java
ファイルに追加します (プロジェクト内の既存のファイルからコピーします)。
大幅に (表面的な変更以上に) 変更する .java ファイルに、自分自身を@author
として追加します。
いくつかの Javadoc を追加し、名前空間を変更する場合はいくつかの XSD doc 要素を追加します。
いくつかの単体テストも非常に役立ちます。誰かがそれを行う必要があります。
他に誰もあなたのブランチを使用していない場合は、現在のメイン (またはメイン プロジェクト内の他のターゲット ブランチ) に対してブランチをリベースしてください。
コミット メッセージを作成するときは、次の規則に従ってください。既存の問題を修正する場合は、コミット メッセージの最後にFixes gh-XXXX
を追加してください (XXXX は問題番号です)。
Spring Cloud Build には、一連の checkstyle ルールが付属しています。これらはspring-cloud-build-tools
モジュールで見つけることができます。モジュール内の最も注目すべきファイルは次のとおりです。
━── ソース §── チェックスタイル │ └── checkstyle-suppressions.xml (3) ━──メイン └── リソース §── checkstyle-header.txt (2) ━── checkstyle.xml (1)
デフォルトの Checkstyle ルール
ファイルヘッダーの設定
デフォルトの抑制ルール
Checkstyle ルールはデフォルトでは無効になっています。 checkstyle をプロジェクトに追加するには、次のプロパティとプラグインを定義するだけです。
<プロパティ> <maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError> (1) <maven-checkstyle-plugin.failsOnViolation>true </maven-checkstyle-plugin.failsOnViolation> (2) <maven-checkstyle-plugin.includeTestSourceDirectory>true </maven-checkstyle-plugin.includeTestSourceDirectory> (3) </プロパティ> <ビルド> <プラグイン> <プラグイン> (4) <groupId>io.spring.javaformat</groupId> <artifactId>spring-javaformat-maven-plugin</artifactId> </プラグイン> <プラグイン> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </プラグイン> </プラグイン> <報告> <プラグイン> <プラグイン> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </プラグイン> </プラグイン> </レポート> </ビルド>
Checkstyle エラーによりビルドが失敗する
Checkstyle 違反によりビルドが失敗する
Checkstyle はテストソースも分析します
Checkstyle フォーマット規則のほとんどを通過するようにコードを再フォーマットする Spring Java Format プラグインを追加します。
checkstyle プラグインをビルドとレポートのフェーズに追加します。
一部のルールを抑制する必要がある場合 (たとえば、行の長さを長くする必要がある)、抑制を含むファイルを${project.root}/src/checkstyle/checkstyle-suppressions.xml
の下に定義するだけで十分です。例:
<?xml バージョン="1.0"?> <!DOCTYPE の抑制 PUBLIC "-//パピークロール//DTD抑制1.1//EN" 「https://www.puppycrawl.com/dtds/suppressions_1_1.dtd」 <抑制> <suppress files=".*ConfigServerApplication.java" checks="HideUtilityClassConstructor"/> <suppress files=".*ConfigClientWatch.java" checks="LineLengthCheck"/> </抑制>
${spring-cloud-build.rootFolder}/.editorconfig
と${spring-cloud-build.rootFolder}/.springformat
プロジェクトにコピーすることをお勧めします。こうすることで、いくつかのデフォルトの書式設定ルールが適用されます。これを行うには、次のスクリプトを実行します。
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/.editorconfig -o .editorconfig
$ touch .springformat
Intellij をセットアップするには、コーディング規約、検査プロファイルをインポートし、checkstyle プラグインをセットアップする必要があります。次のファイルは Spring Cloud Build プロジェクトにあります。
━── ソース §── チェックスタイル │ └── checkstyle-suppressions.xml (3) ━──メイン └── リソース §── checkstyle-header.txt (2) §── checkstyle.xml (1) ━── インテリジ §── Intellij_Project_Defaults.xml (4) ━── Intellij_Spring_Boot_Java_Conventions.xml (5)
デフォルトの Checkstyle ルール
ファイルヘッダーの設定
デフォルトの抑制ルール
Checkstyle ルールのほとんどを適用する Intellij のプロジェクトのデフォルト
Checkstyle ルールのほとんどを適用する Intellij のプロジェクト スタイル規則
File
→ Settings
→ Editor
→ Code style
に移動します。そこで、 Scheme
セクションの横にあるアイコンをクリックします。そこで、 Import Scheme
値をクリックし、 Intellij IDEA code style XML
オプションを選択します。 spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
ファイルをインポートします。
File
→ Settings
→ Editor
→ Inspections
に移動します。そこで、 Profile
セクションの横にあるアイコンをクリックします。そこで、「 Import Profile
をクリックし、 spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
ファイルをインポートします。
Intellij を Checkstyle と連携させるには、 Checkstyle
プラグインをインストールする必要があります。 JUnit アサーションを自動的に変換するには、 Assertions2Assertj
もインストールすることをお勧めします。
File
→ Settings
→ Other settings
→ Checkstyle
に移動します。 Configuration file
セクションの+
アイコンをクリックします。そこでは、checkstyle ルールをどこから選択するかを定義する必要があります。上の画像では、複製された Spring Cloud Build リポジトリからルールを選択しています。ただし、Spring Cloud Build の GitHub リポジトリ (たとえば、 checkstyle.xml
の場合: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
) を指定することはできます。 https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
)。次の変数を指定する必要があります。
checkstyle.header.file
- spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
されたリポジトリ内またはhttps://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
URL。
checkstyle.suppressions.file
- デフォルトの抑制。クローンしたリポジトリ内またはhttps://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
経由で、Spring Cloud Build のspring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
ファイルを指定してください。 https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
URL。
checkstyle.additional.suppressions.file
- この変数はローカル プロジェクトの抑制に対応します。たとえば、 spring-cloud-contract
に取り組んでいます。次に、 project-root/src/checkstyle/checkstyle-suppressions.xml
フォルダーをポイントします。 spring-cloud-contract
の例は次のようになります: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
。
重要 | 運用ソースとテスト ソースにチェックスタイル ルールを適用するため、 Scan Scope All sources に設定することを忘れないでください。 |
Spring Cloud Build には、 Java クラスパス上の重複および競合するクラスとリソースにフラグを立てることができるbasepom:duplicate-finder-maven-plugin
が導入されています。
Duplicate finder はデフォルトで有効になっており、Maven ビルドのverify
フェーズで実行されますが、プロジェクト内で有効になるのは、プロジェクトのpom.xml
のbuild
セクションにduplicate-finder-maven-plugin
追加した場合のみです。
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
</ plugin >
</ plugins >
</ build >
他のプロパティについては、プラグインのドキュメントに記載されているようにデフォルトを設定しました。
これらは簡単にオーバーライドできますが、選択したプロパティの値にduplicate-finder-maven-plugin
プレフィックスを付けて設定します。たとえば、ビルドで重複チェックをスキップするにはduplicate-finder-maven-plugin.skip
true
に設定します。
セットアップにignoredClassPatterns
またはignoredResourcePatterns
を追加する必要がある場合は、プロジェクトのプラグイン構成セクションに必ず追加してください。
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
< configuration >
< ignoredClassPatterns >
< ignoredClassPattern >org.joda.time.base.BaseDateTime</ ignoredClassPattern >
< ignoredClassPattern >.*module-info</ ignoredClassPattern >
</ ignoredClassPatterns >
< ignoredResourcePatterns >
< ignoredResourcePattern >changelog.txt</ ignoredResourcePattern >
</ ignoredResourcePatterns >
</ configuration >
</ plugin >
</ plugins >
</ build >