前のブログでは、それぞれのサービスに構成ファイルを配置しましたが、これを行うには1つの欠点があります。構成が変更されたら、オンラインになる前にシャットダウンして構成ファイルを変更する必要があります。サービスが少ない場合、これを行うことは理解できます。ただし、数百のサービスがある場合、現時点では分散構成管理が必要です。 Spring Cloud Configは、この問題を解決するために作成されます。以下は、分散構成センターの構築を実装するためのgitlabの組み合わせです。 Spring Cloud Configuration Centerは、サーバーエンドとクライアントエンドで構成されています。
前提条件:gitlabのプロジェクトの下に新しい構成ファイルconfigserver-dev.propertiesを作成する
1.サーバーを構成します
1.依存関係を追加します
<Dependency> groupId> org.springframework.cloud </groupId> <artifactid> spring-cloud-config-server </artifactid> </dependency>
2.アプリケーションメインクラスでサポートを有効にします
@enableconfigserver
3。Application.ymlファイルを構成します
サーバー:ポート:8888スプリング:アプリケーション:name:config Cloud:config:server:git:uri:https://gitlab.xxx.com/xxxxx/xxxx.git#gitlabリポジトリのアドレスを構成します。検索パス: /config-repo#gitlabリポジトリアドレスの下の相対アドレスは、複数、使用、および分割で構成できることに注意してください。ユーザー名:ユーザー名#gitlabリポジトリアカウントパスワード:パスワード#gitlabリポジトリパスワード
注:構成ファイルがGitリポジトリのルートディレクトリに配置されている場合、SearchPathsパラメーターを使用する必要はありません。この例の構成ファイルはConfig-Repo Directoryにあるため、SearchPathsパラメーターを使用して、Config-Repo Subdirectoryを検索するようにconfigサーバーにプロンプトします。
4.サーバーを起動して、http:// localhost:8888/configserver/dev/masterをブラウザに入力します
{"name": "configserver"、 "profiles":["dev"]、 "" label ":" master "、" version ":" 073cda9ce85a3eed00e406f4ebcc4651ee4d9b19 "、" state ":null、" propertySources ":[{" name ":" "https://gitlab.xxx.com/xxxxx/project/config-repo/configserver.properties"、 "source":{"name": "chhliuxyh"、 "hello": "I'm te King the World !!!"、 "Profile-Default"}}サーバー側は、gitlabの構成ファイルを既に読み取ることができることがわかります。以下のフォームでGitLabのリソースにアクセスできます
/{application} /{profile} [ /{label}] /{application} - {profile }.yml /{label }/ {application} - {profile }.yml /{application} - {profile} .yml /{application }- {profile} .properties /{label }/ {applicationたとえば、http:// localhost:8888/configserver-dev.yml in the browserに入力してください。結果は次のとおりです。
こんにちは:私は世界の王です!!!名前:Chhliuxyhプロフィール:プロファイル - デフォルト
2。クライアントを構成します
1. POM依存関係を追加します
<依存関係> groupId> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-config </artifactid> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-startertertertertertertertertertertertid </artifactid> </artifactid> </artifactid>
2。bootstrap.ymlファイルを構成します
注:ここでの構成ファイルは、bootstrap.propertiesまたはbootstrap.ymlファイルに配置する必要があります。これは、configの構成がapplication.propertiesの前に、bootstrap.propertiesの読み込みに先行するためです。
サーバー:ポート:8889スプリング:アプリケーション:名前:configserver#構成ファイルのプレフィックスと一致する必要があります。たとえば、ここの構成ファイル名はconfigserver-dev.propertiesです。したがって、configserverクラウドとして構成する必要があります。
3.クライアントを確認します
クライアントに新しいコントローラーを追加します
パッケージcom.chhliu.springcloud.config; Import org.springframework.beans.factory.annotation.value; Import org.springframework.boot.springApplication; Import org.springframework.boot.autoconfigure.springbootapplication; org.springframework.cloud.context.config.annotation.refreshscopeをインポートします。 Import org.springframework.web.bind.annotation.getMapping; org.springframework.web.bind.annotation.restControllerをインポートします。 @springBootApplication @RestController @RefreshScope // Annotation @RefreshScopeは、サーバーの構成がパブリッククラスSpringCloudConfigClientApplicationを変更すると、設定クライアントが注入されたプロパティ値を再表示することを示しています。 } @value( "$ {hello}")// gitlab構成ファイルのプロパティを読み取ります。値を読むと、クライアントがプライベート文字列プロファイルが問題ないことを意味します。 @getMapping( "/hello")public string hello(){return this.profile; }}ブラウザをご覧ください:http:// localhost:8889/hello、結果は次のとおりです。
私は世界の王です!!!
これは、クライアントがサーバーからすでに値を取得できることを意味します。
3.ダイナミックリフレッシュ
クライアントを再起動せずにスプリングクラウド構成管理構成を更新する
1。gitlabリポジトリのconfigserver-dev.properties configurationファイルでhelloに対応するプロパティ値を更新します
2。http:// localhost:8888/configserver/dev/masterにアクセスして、サーバー側のコンテンツが更新されていることを確認します
3. confクライアントに投稿リクエストを送信http:// localhost:8889/reffresh、および200 okを返します。 http:// localhost:8889/hello再度、読み取り属性値がクライアントサービスを再起動せずに動的に更新されていることがわかります。
PS:ダイナミックリフレッシュを実現するには、POMファイルに次のスターターを追加する必要があります
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-actuator </artifactid> </dependency>
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。