分散式配置中心客戶端
學習完整課程請移步 網際網路 Java 全棧工程師
本節視訊
概述
建立一個工程名為 hello-spring-cloud-config-client
的專案,pom.xml
檔案配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.funtl</groupId>
<artifactId>hello-spring-cloud-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../hello-spring-cloud-dependencies/pom.xml</relativePath>
</parent>
<artifactId>hello-spring-cloud-config-client</artifactId>
<packaging>jar</packaging>
<name>hello-spring-cloud-config-client</name>
<url>http://www.funtl.com</url>
<inceptionYear>2018-Now</inceptionYear>
<dependencies>
<!-- Spring Boot Begin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot End -->
<!-- Spring Cloud Begin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- Spring Cloud End -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.funtl.hello.spring.cloud.config.client.ConfigClientApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
主要增加了 spring-cloud-starter-config
依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Application
入口類沒有需要特殊處理的地方,程式碼如下:
package com.funtl.hello.spring.cloud.config.client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
application.yml
增加 Config Client 相關配置,並設定埠號為:8889
spring:
application:
name: hello-spring-cloud-config-client
cloud:
config:
uri: http://localhost:8888
name: config-client
label: master
profile: dev
server:
port: 8889
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
相關配置說明,如下:
-
spring.cloud.config.uri
:配置服務中心的網址 -
spring.cloud.config.name
:配置檔名稱的字首 -
spring.cloud.config.label
:配置倉庫的分支 -
spring.cloud.config.profile
:配置檔案的環境標識- dev:表示開發環境
- test:表示測試環境
- prod:表示生產環境
注意事項:
- 配置伺服器的預設埠為
8888
,如果修改了預設埠,則客戶端專案就不能在application.yml
或application.properties
中配置spring.cloud.config.uri
,必須在bootstrap.yml
或是bootstrap.properties
中配置,原因是bootstrap
開頭的配置檔案會被優先載入和配置,切記。
建立測試用 Controller
我們建立一個 Controller 來測試一下通過遠端倉庫的配置檔案注入 foo
屬性
package com.funtl.hello.spring.cloud.config.client.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestConfigController {
@Value("${foo}")
private String foo;
@RequestMapping(value = "/hi", method = RequestMethod.GET)
public String hi() {
return foo;
}
}
一般情況下,能夠正常啟動服務就說明注入是成功的。
測試訪問
瀏覽器端訪問:http://localhost:8889/hi 顯示如下:
foo version 1
附:開啟 Spring Boot Profile
我們在做專案開發的時候,生產環境和測試環境的一些配置可能會不一樣,有時候一些功能也可能會不一樣,所以我們可能會在上線的時候手工修改這些配置資訊。但是 Spring 中為我們提供了 Profile 這個功能。我們只需要在啟動的時候新增一個虛擬機器引數,啟用自己環境所要用的 Profile 就可以了。
操作起來很簡單,只需要為不同的環境編寫專門的配置檔案,如:application-dev.yml
、application-prod.yml
,
啟動專案時只需要增加一個命令引數 --spring.profiles.active=環境配置
即可,啟動命令如下:
java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod
相關文章
- 分散式 配置中心分散式
- 分散式之配置中心分散式
- Thrift 客戶端-服務端 零XML配置 註解式配置客戶端服務端XML
- 《springcloud 三》分散式配置中心SpringGCCloud分散式
- 分散式配置中心之思考分散式
- 物理DataGuard客戶端無縫切換--客戶端TAF 配置客戶端
- 基於Dtm分散式事務管理的php客戶端分散式PHP客戶端
- 微服務之分散式配置中心微服務分散式
- SpringCloud之分散式配置中心(六)SpringGCCloud分散式
- SpringCloud-分散式配置中心(config)SpringGCCloud分散式
- SpringCloud-Config 分散式配置中心SpringGCCloud分散式
- Apollo 分散式配置中心(補充)分散式
- 攜程二面:分散式配置中心服務端如何感知配置變化?分散式服務端
- 分散式配置中心spingcloud-config-server分散式GCCloudServer
- .Net Core+分散式配置中心(AgileConfig)分散式
- 詳解Nacos 配置中心客戶端配置快取動態更新的原始碼實現客戶端快取原始碼
- 郵件客戶端的配置使用客戶端
- 阿里巴巴 Nacos 分散式配置中心原理阿里分散式
- 基於Spring Cloud搭建分散式配置中心SpringCloud分散式
- Spring Cloud Config 分散式配置中心【Finchley 版】SpringCloud分散式
- 基於zookeeper的分散式配置中心(一)分散式
- 好傢伙,分散式配置中心真好用分散式
- SpringCloud Alibaba實戰(10:分散式配置中心)SpringGCCloud分散式
- OSSEC服務端配置客戶端批次部署方案服務端客戶端
- 以客戶端為中心的錯誤處理客戶端
- 在分散式系統中通過客戶端庫包提高可用性分散式客戶端
- 基於zookeeper實現分散式配置中心(二)分散式
- Kubernetes安裝之五:配置kubectl客戶端客戶端
- Telegram原始碼之安卓客戶端配置原始碼安卓客戶端
- Tomcat配置Gizp 客戶端使用okHttp3Tomcat客戶端HTTP
- Https雙向認證Android客戶端配置HTTPAndroid客戶端
- Jaeger的客戶端取樣配置(Java版)客戶端Java
- 客戶端自動配置安裝(expect工具)客戶端
- 【SpringCloud】Ribbon如何自定義客戶端配置和全域性配置SpringGCCloud客戶端
- Eureka高可用叢集服務端和客戶端配置服務端客戶端
- NBU 8.0客戶端安裝和備份配置客戶端
- 搭建eureka叢集環境以及客戶端配置客戶端
- PinPoint單節點部署及客戶端配置方法客戶端