springCloudシリーズのリモート設定ファイルの設定 (6)

マイクロサービスプロジェクトでは設定ファイルが大量に存在することが多く、設定ファイルが多すぎると後からの修正が困難になるため、設定ファイルの処理を軽減するためにspringCloudのconfigモジュールを利用して開発・処理を行います。

Config はサーバーとクライアントに分かれており、よく使用する設定をリモート ツール (git、SVN、コード クラウド) に配置し、Config サーバーが必要な設定をリモート ツールからダウンロードし、クライアントがこれらの設定を取得します。

使い方が簡単

1. Code Cloud 上に設定ファイルconfig-dev.ymlを書き込みます。これは実際には通常の設定ファイルですが、設定ファイル名に - を追加すると、後で設定ファイルを書きやすくなります。

server:
  port: 8085
spring:
  application:
    name: user-provider
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false
    password: root
    username: root
mybatis:
  type-aliases-package: com.lihao
  mapper-locations: classes:mapper/*Mapper.xml
eureka:
  client:
    service-url:
      defaultZone: http://root:123456@localhost:7776/eureka/

2. config-server プロジェクトを作成して、コード クラウドから対応する構成をダウンロードします。

まず、元の springCloud プロジェクトの依存関係に基づいて新しい依存関係を追加します。

<!-- config -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

構成ファイル application.yml を追加します

server:
  port: 7000
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri:  https://gitee.com/lihao2/config-server.git
eureka:
  client:
    service-url:
      defaultZone: http://root:123456@localhost:7776/eureka/

@EnableConfigServer アノテーションをスタートアップ クラスに追加し、最後にスタートアップ クラスを実行します

起動後、http://localhost:7000/config-dev.yml にアクセスすると、作成した構成ファイルの内容が表示され、成功したことがわかります。

3. 構成クライアントを書きます。

ここでのクライアントは、実際にはプロデューサーまたはコンシューマーを指します。プロデューサー側で直接依存関係を追加できます。まず、ユーザー プロバイダーの下に Maven 依存関係を追加します。

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

リソース ディレクトリに bootstrap.yml ファイルを作成します。bootstrap.yml は application.yml に似ていますが、application.yml の前に実行される点が異なります。

注意name的值和profile的值就是在Git中配置文件的名称
我的配置文件名是config-dev,所以下面的name值是config,profile的值是dev

spring:
  application:
    name: config
  cloud:
    config:
      uri: http://localhost:7000/
      profile: dev
      

手動更新

現在、configの利用は終了していますが、実際のプログラミングではリモートファイルの設定を直接変更する必要がある場合がありますが、現時点では直接利用することができず、サービスを再起動する必要があります。プロジェクトを再起動せずに直接使用しますか? 次の構成では、再起動せずにプロジェクトを完了し、構成を手動で直接更新する方法について説明します。

手動リフレッシュ効果を便利に表示するには、まずリモート gitee にプロファイル属性を追加します。値は関係ありません。これは主に構成のリフレッシュ効果を示すために使用されます。

profile: one

jar パッケージをサービスのプロデューサーまたはコンシューマーである config-client に追加します (このプロジェクトではユーザー プロバイダーです)。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

springBoot検証をキャンセルするには、設定ファイルbootstrap.ymlに次の設定を追加します。

management:
  security:
    enabled: false

最後にコントローラークラス

@RestController
@RefreshScope
public class UserService {

	// 获取配置中的profile值,并注入
    @Value("${profile}")
    private String profile;

    @RequestMapping("t")
    public String test(){
        System.out.println(profile);
        return "success";
    }
}

それからテストします

まずすべてを開始し、リモートでプロファイルの値を変更し、プロデューサー側の /refresh パスにアクセスします。アクセス方法は POST であることに注意してください。この時点で、手動リフレッシュが完了します。製作者側の印刷ログ 印刷されるものは最新のものに価値があります

おすすめ

転載: blog.csdn.net/lihao1107156171/article/details/114296560