1. 程式人生 > >SpringBoot2 Spring Cloud consul 分散式配置中心使用教程

SpringBoot2 Spring Cloud consul 分散式配置中心使用教程

環境說明

java 1.8 idea 2018.x spring boot 2.0.5

consul 安裝與啟動

docker-compose.yml 把不需要用到的給註釋掉,不 註釋掉也不影響 執行如下,

cd docker

docker-compose up

foxwho.風

手冊

建立測試案例

瀏覽器訪問

http://localhost:8500/ui/dc1/kv

點選create按鈕,建立

config/application,dev/data

內容

config:
	title: 這是基礎,你知道:後面還有一個空格碼

如圖 在這裡插入圖片描述 依葫蘆畫瓢,新增的引數如下

config/application/data
#內容是>>>
config: title: 這是所有應用預設配置
config/server-demo,dev/data
#內容是>>>
config:
	title: 這是dev開發版demo
config/server-demo/data	
#內容是>>>
config:
	title: 這是正式版demo

idea 建立SpringBoot2 Spring Cloud consul 案例

在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述

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> <groupId>com.foxwho</groupId> <artifactId>server-demo</artifactId> <
version
>
0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>server-demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

入口如下

package com.foxwho.consul.demo001;

import com.foxwho.consul.demo001.model.Config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigurationProperties({Config.class})//指定配置類
public class ConsulDemo001Application {

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

Config 類

package com.foxwho.consul.demo001.model;

import org.springframework.boot.context.properties.ConfigurationProperties;

//title要與consul上面的config:下 title寫的一樣,consul上面可以寫多級目錄 例如: config: title: 這是標題
//對應bootstrap.yml 中的 config
@ConfigurationProperties(prefix = "config")
public class Config {
    private String title; //name要與consul上面的title寫的一樣

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "title : ["+title+"] ";
    }
}

控制器

package com.foxwho.consul.demo001.controller;

import com.foxwho.consul.demo001.model.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {
    @Autowired
    private Config config;

    @RequestMapping(value = "/getConfig")
    public String getConfig() {
        return config.toString();
    }

    @RequestMapping(value = "/getTitle")
    public String getTitle() {
        return config.getTitle();
    }
}

瀏覽器效果

http://localhost:8010/getTitle

在這裡插入圖片描述

原始碼