SpringCloud入門(6)Config

前言

已經4天沒有更新了,怎麼說呢,就很忙,很忙,很忙。主要仍是畢業以及從一個城市到另一個城市的事情,這段時間盡最大可能保持2,3天一更,最晚不超過4,5天一更。java

415f82b9ly1glozkiyu0tj20c80a3wes

隨着模塊的增多,會出現配置文件繁雜的通病,每次都要打開好多層目錄才能找到配置文件,SpringCloud中的Config組件就是爲了解決這個問題,經過簡單的配置就能實現配置文件的統一管理。git

Config服務端

引入Config服務端

建立Config空父模塊,在下面創建一個config-server子模塊,修改子模塊的pom文件github

注意是子模塊的pom文件,不像之前同樣修改的是空父模塊的pom文件
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>

配置文件

由於暫時不必註冊進Eureka中,因此配置文件的編寫仍是比較簡單的spring

server:
  port: 8101

spring:
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/cutey_none/springcloud-study-config
          username:
          password:
      label: master

spring.cloud.config.server.git.uri :存放文件的地址,到時候客戶端就從這裏獲取配置文件,能夠本地,也能夠是gitbootstrap

若是是公開倉庫,那麼 usernamepassword 不用寫

由於建立的springcloud-study-config 倉庫設置的權限開放的,因此直接用個人也行,本身建立也行,就正常github或者gitee建立一個倉庫就好。app

倉庫放置的是各個微服務的配置文件

例子是管理config-client微服務(後面會建立)的配置文件,因此須要在倉庫中建立一個config-client-dev.properties(-dev表示是開發環境下的配置文件)微服務

config-client-dev.properties 文件的內容以下,能夠看做是config-client服務的某些配置測試

主啓動類

增長@EnableConfigServer 註解以提供config服務支持spa

@SpringBootApplication
@EnableConfigServer
public class ConfigServer8101 {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServer8101.class, args);
    }
}

測試

SpringCloud Config有本身http服務訪問資源的形式code

  • /{application}/{profile}[/{label}] >> /config-client/dev
  • /{application}-{profile}.yml >> /config-client-dev.yml
  • /{label}/{application}-{profile}.yml >> /master/config-client-dev.yml
  • /{application}-{profile}.properties >> /config-client-dev.properties
  • /{label}/{application}-{profile}.properties >> /master/config-client-profile.properties

單個運行ConfigServer8101項目便可,用上述5種方式訪問資源,能夠看到均能成功從服務端訪問資源

config客戶端

引入config客戶端

前面一直說的config-client 就是接下來要建立的模塊,最終的項目結構目錄以下

接着修改config-client9501 模塊的pom文件,注意服務端和客戶端引入的依賴是不同的

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

配置文件

配置文件注意命名是 bootstrap.yml

由於客戶端要設置服務端的uri,因此應該優先加載客戶端配置文件

server:
  port: 9501
spring:
  application:
    name: config-client
  cloud:
    config:
      profile: dev
      label: master
      uri: http://localhost:8101

spring.cloud.config.uri :服務端的地址,去哪裏取配置文件

主啓動類和業務類

@SpringBootApplication
@RestController
public class ConfigClient9501 {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClient9501.class, args);
    }

    @Value("${name}")
    String name;
    @GetMapping("/hi")
    public String hello() {
        return "hello, " + name;
    }
}
在這裏可能會遇到提示找不到佔位符${name},那確定是哪一方面沒有按照步驟來了

測試

注意哈,上面客戶端的配置文件中是沒有name這個變量的

服務端的項目不用中止,再開啓config-client9501 項目,開啓的項目以下

下面訪問localhost:9501/hi ,正常的狀況下能夠看到以下

其實已經抽蠻多的零碎時間來寫了,可是有時候遇到了一些問題也仍是須要儘量弄懂再通俗地講出來,但願能幫到看這篇文章的小夥伴啦!!!

創做不易,若是對你有幫助,歡迎點贊,收藏和分享啦!

下面是我的公衆號,有興趣的能夠關注一下,說不定就是你的寶藏公衆號哦,基本2,3天1更技術文章!!!

相關文章
相關標籤/搜索