※Server 端設定
※新增一個全新的專案,放在 github 上,裡面就放一個 application.yml,內容如下:
spring: profiles: active: dev --- spring: profiles: dev application: name: xxx-dev --- spring: profiles: uat application: name: xxx-uat --- spring: profiles: test application: name: xxx-test
※ 連 --- 也不能省略
※spring.profiles.active 還可以配合 @Profile 使用
※新增一個 module,增加 pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
※
※application.yml
server: port: 1111 spring: application: name: config-center cloud: config: server: git: uri: https://github.com/bruce12452002/SpringCloudConfigCenterPractice.git # git網址
※和 uri 同層的還有 username 和 password,是 github 的帳號和密碼,但本來 git clone 就不用打帳號密碼,所以沒有要 push 的話,可以不用寫
※uri 一打,啟動後的控製台就沒有預設的 8888 port 了
※main 方法增加 @EnableConfigServer,然後啟動測試看看
※hosts 增加 127.0.0.1 config.ooo1111 來模擬
※打上如下的網址,即可看到結果:
http://config.ooo1111:1111/application-dev.yml
http://config.ooo1111:1111/master/application-dev.yml
spring:
application:
name: xxx-dev
profiles:
active: dev
http://config.ooo1111:1111/application-uat.yml
spring:
application:
name: xxx-uat
profiles:
active: dev
http://config.ooo1111:1111/application-xxx.yml
spring:
profiles:
active: dev
※格式不是亂打的,看官網,label 是分支的意思
※Client 端設定
※在github 增加 abcxxx.yml,內容如下:
spring: profiles: active: dev --- server: port: 8001 spring: profiles: dev application: name: my-config-dev eureka: client: service-url: defaultZone: http://xxx.ooo9051:9051/eureka --- server: port: 8002 spring: profiles: uat application: name: my-config-uat eureka: client: service-url: defaultZone: http://xxx.ooo9051:9051/eureka --- server: port: 8003 spring: profiles: test application: name: my-config-test eureka: client: service-url: defaultZone: http://xxx.ooo9051:9051/eureka
※
※新建一個 model,加入 pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
※父 pom 已經有 spring-cloud-starter-config,所以不用加
※寫一個測試的方法
@RestController public class ClientConfigInfo { @Value("${spring.application.name}") private String appName; @Value("${eureka.client.service-url.defaultZone}") private String eurekaServerName; @Value("${server.port}") private Integer port; @GetMapping("/configInfo") public String getConfigInfo() { StringBuilder sb = new StringBuilder(); sb.append("appName=").append(appName) .append(", eurekaServerName=").append(eurekaServerName) .append(", port=").append(port); return sb.toString(); } }
※
※以下只能寫在 bootstrap.yml
spring: cloud: config: name: abcxxx # 讀 github 的 yml,但不能寫副檔名 profile: dev label: master uri: http://config.ooo1111:1111 # 找 config 伺服器
※
※測試
hosts 增加 127.0.0.1 config-client.ooo 模擬,不能用「_」,會報錯啟動時控製台出現以下訊息:
※表示連到了 8003,然後在網址打 http://config-client.ooo:8003/configInfo,即可看到結果
※修改 bootstrap.yml 裡的 spring.cloud.config.profile,只要 github 有的,重新啟動後即可抓到新的設定
沒有留言:
張貼留言