
分散システム用の集中設定サーバー。HTTP API、Gitバックアップストレージ、プロパティ暗号化/復号化、Vault、JDBC、ローカルファイルシステムとの統合を備えています。
//// このファイルを編集しないでください。生成されたファイルです。 このファイルへの手動による変更は、再生成時に失われます。 代わりに src/main/asciidoc/ ディレクトリ内のファイルを編集してください。 ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master"] image::https://api.codacy.com/project/badge/Grade/f064024a072c477e97dca6ed5a70fccd?branch=master["Codacy code quality", link="https://www.codacy.com/app/Spring-Cloud/spring-cloud-config?branch=master&utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-config&utm_campaign=Badge_Grade"]
Spring Cloud Config は、分散システムにおける外部化構成のためのサーバー側およびクライアント側のサポートを提供します。Config Server を使用すると、すべての環境にわたるアプリケーションの外部プロパティを管理する中心的な場所が得られます。
クライアントとサーバーの両方の概念は、Spring の Environment および PropertySource の抽象化と正確に対応しているため、Spring アプリケーションに非常に適していますが、任意の言語で実行されている任意のアプリケーションで使用できます。
アプリケーションが開発からテスト、そして本番へとデプロイメントパイプラインを進むにつれて、それらの環境間で構成を管理し、移行時にアプリケーションが必要なものをすべて備えていることを確信できます。
サーバーストレージバックエンドのデフォルト実装は git を使用するため、構成環境のラベル付きバージョンを簡単にサポートし、コンテンツを管理するための幅広いツールからアクセスできます。
代替実装を追加し、Spring 構成でプラグインするのは簡単です。
== Features
=== Spring Cloud Config Server
Spring Cloud Config Server には、次の利点があります。
@EnableConfigServer を使用して Spring Boot アプリケーションに簡単に組み込み可能=== Spring Cloud Config Client
特に Spring アプリケーション向けに、Spring Cloud Config Client では次のことができます。
Environment を初期化します。@Beans のための @RefreshScope。/env: Environment の更新と @ConfigurationProperties およびログレベルの再バインド用。
** /refresh: @RefreshScope ビーンをリフレッシュするため。
** /restart: Spring コンテキストを再起動するため(デフォルトでは無効)。
** /pause と /resume: ApplicationContext の Lifecycle メソッド(stop() と start())を呼び出すため。== Quick Start
このクイックスタートでは、Spring Cloud Config Server のサーバーとクライアントの両方の使用方法を説明します。
まず、次のようにサーバーを起動します。
サーバーは Spring Boot アプリケーションなので、必要に応じて IDE から実行することもできます(メインクラスは ConfigServerApplication です)。
次に、次のようにクライアントを試します。
プロパティソースを特定するデフォルトの戦略は、git リポジトリ(spring.cloud.config.server.git.uri)をクローンし、それを使用してミニ SpringApplication を初期化することです。ミニアプリケーションの Environment を使用してプロパティソースを列挙し、それらを JSON エンドポイントで公開します。
HTTP サービスには、次の形式のリソースがあります。
ここで、application は SpringApplication の spring.config.name として注入され(通常の Spring Boot アプリでは通常 application)、profile はアクティブなプロファイル(またはカンマ区切りのプロパティリスト)、label はオプションの git ラベル(デフォルトは master)です。
Spring Cloud Config Server は、さまざまなソースからリモートクライアントの構成を取得します。次の例では、git リポジトリ(提供する必要があります)から構成を取得します。次の例を参照してください。
その他のソースとしては、JDBC 互換データベース、Subversion、Hashicorp Vault、Credhub、ローカルファイルシステムがあります。
=== Client Side Usage
これらの機能をアプリケーションで使用するには、spring-cloud-config-client に依存する Spring Boot アプリケーションとして構築できます(例については、config-client のテストケースまたはサンプルアプリケーションを参照してください)。依存関係を追加する最も便利な方法は、Spring Boot スターター org.springframework.cloud:spring-cloud-starter-config を使用することです。また、Maven ユーザー向けの親 pom と BOM(spring-cloud-starter-parent)、Gradle および Spring CLI ユーザー向けの Spring IO バージョン管理プロパティファイルもあります。次の例は、典型的な Maven 構成を示しています。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-docs-version}</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>{spring-cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- repositories also needed for snapshots and milestones -->
次に、次のような HTTP サーバーなど、標準の Spring Boot アプリケーションを作成できます。
@SpringBootApplication @RestController public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
この HTTP サーバーが実行されると、ポート 8888 のデフォルトのローカル構成サーバー(実行中の場合)から外部構成を取得します。起動時の動作を変更するには、bootstrap.properties(application.properties に似ていますが、アプリケーションコンテキストのブートストラップフェーズ用)を使用して構成サーバーの場所を変更できます。次の例を参照してください。
デフォルトでは、アプリケーション名が設定されていない場合、application が使用されます。名前を変更するには、次のプロパティを bootstrap.properties ファイルに追加できます。
NOTE: ${spring.application.name} プロパティを設定するときは、正しいプロパティソースの解決に関する問題を防ぐために、アプリ名に予約語 application- をプレフィックスとして付けないでください。
ブートストラッププロパティは、次の例に示すように、高優先度のプロパティソースとして /env エンドポイントに表示されます。
```configService:/というプロパティソースには、値がbarのfoo` プロパティが含まれており、最も高い優先度になります。
NOTE: プロパティソース名の URL は git リポジトリであり、構成サーバーの URL ではありません。
=== Sample Application
サンプルアプリケーションは https://github.com/spring-cloud/spring-cloud-config/tree/master/spring-cloud-config-sample[ここ] にあります。これは Spring Boot アプリケーションなので、通常の方法(たとえば mvn spring-boot:run)で実行できます。実行すると、http://localhost:8888(設定可能なデフォルト)で構成サーバーを探すため、サーバーも実行して全体が連携して動作するのを確認できます。
サンプルには、構成サーバーが同じ JVM 内(別のポート)でも起動されるテストケースがあり、テストは git 構成リポジトリからの環境プロパティが存在することを検証します。
構成サーバーの場所を変更するには、bootstrap.yml(またはシステムプロパティやその他の場所)で spring.cloud.config.uri を設定できます。
テストケースには、同じ方法でサーバーを実行する main() メソッドがあります(ログでポートを確認してください)。そのため、1 つのプロセスでシステム全体を実行して試すことができます(たとえば、IDE で main() メソッドを実行できます)。main() メソッドは git リポジトリの作業ディレクトリとして target/config を使用するため、そこでローカルに変更を加え、実行中のアプリに反映されるのを確認できます。次の例は、テストケースをいじっているセッションを示しています。
refresh エンドポイントは、"sample" プロパティが変更されたことを報告します。
== Building
:jdkversion: 1.7
=== Basic Compile and Test
ソースをビルドするには、JDK {jdkversion} をインストールする必要があります。
Spring Cloud は、ほとんどのビルド関連アクティビティで Maven を使用します。関心のあるプロジェクトをクローンして、次のように入力すると、すぐに開始できるはずです。