1. 程式人生 > >springboot+springcloud config

springboot+springcloud config

ack sea stat arch 頁面 doc tar -c string

參考:sorry,全找不到了,當時沒記錄,最後後知後覺覺得應該記錄,所以後面的都有在asfood父項目中的doc文件夾下記錄,望見諒。

1. springconfig server

1.1. pom.xml

<!-- 父項目以來 -->

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true
</optional> <scope>true</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true
</fork> </configuration> </plugin> </plugins> </build>
1.2 啟動類
@EnableConfigServer
@SpringBootApplication
public class TomatoApplication {
    public static void main(String[] args) {
        SpringApplication.run(TomatoApplication.
class, args); } }

1.3 配置

server: 
  port: 55590
spring:
  application:
    name: asfood-tomato
  profiles:
    active: dev
  cloud:
    config:
      server:
        git:
          # 配置git倉庫的地址  #訪問地址: http://localhost:55590/{filename}/{env}/{branch}
          uri: https://github.com/molyjao/mlims
          # git倉庫地址下的相對地址,可以配置多個,用,分割。
          #search-paths: asfoodconfig
          # git倉庫的賬號
          #username: #jiu_shaan@163.com
          # git倉庫的密碼
          #password: 

#配置之後訪問git配置需要輸入用戶名密碼
security:
  user:
    name: tomato
    password: tomato

啟動工程,如果可以使用 http://localhost:55590/{文件名不帶後面環境}/{環境}/{git分支}訪問 ,並可以展示裏面內容即可。

2. springcloud client

2.1 pom.xml
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-actuator</artifactId>  
        </dependency>  
        
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.2 啟動類

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

控制層:

@RestController
@RefreshScope  //刷新配置使用的註解,
public class KetchupController {
    
    //qqname為配置文件的內容的一個key,‘:‘後面是默認值
    @Value("${qqname:defaultqqname}")  
    private String str;

    @RequestMapping("/ketchup")
    String hello() { 
        return "Hello " + str + "!";  
    }
}
2.3 配置文件:兩部分bootstrap.yml和application.yml文件,由於bootstrap.yml加載最早,所以需要加載服務端配置文件內的內容需要優先加載。

bootstrap.yml

spring:
  cloud:
    config:
      name: asfood
      profile: dev
      label: master
      uri: http://localhost:55590/
      #discovery:
        enabled: true                        # 默認false,設為true表示使用註冊中心中的configserver配置而不自己配置configserver的uri
        serviceId: asfood-tomato            # 指定config server在服務發現中的serviceId,默認為:configserver
      #由於服務端配置了訪問需要用戶名和密碼,所以此處也需要配置
      username: tomato
      password: tomato

application.yml

server:
  port: 55591
  
spring: 
  application: 
    name: asfood-ketchup
  profiles:
    active: dev

#日誌
logging:
  file: ./logs/ketchup.log

management:
  security: 
    enabled: false   #actuator是否需要安全保證 默認為true  不加會報錯

現在啟動服務端,後啟動客戶端,可以訪問就正常了,

如果客戶端啟動報錯:找不到所配置的讀取的文件中的key, xxx placeholder ${xxx} 這個錯誤就是沒有找到配置文件(保證不會手誤,key寫的不一樣),如果此時你的服務端的頁面訪問配置文件,不能訪問到配置文件中的內容,這個需要再次百度,如果是服務端可以訪問到配置文件中的內容,這個時候需要檢查客戶端的服務端地址等的配置,檢查服務端和客戶端啟動類的註釋,一個是server一個是client還有問題百度吧,我也初學。。。還有個好網站,stackoverflow。

自動刷新配置文件訪問: 客戶端ip:port/refresh

有需要可以參考這裏(在asfood-ketchup-config-client和asfood-tomato-config-server中): https://github.com/molyjao/mlims.git

springboot+springcloud config