マイクロサービスプロジェクトでは設定ファイルが大量に存在することが多く、設定ファイルが多すぎると後からの修正が困難になるため、設定ファイルの処理を軽減するために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 であることに注意してください。この時点で、手動リフレッシュが完了します。製作者側の印刷ログ 印刷されるものは最新のものに価値があります