使用 HashiCorp Consul 和 Spring 启动的分布式配置

Distributed Configuration with HashiCorp Consul and Spring Boot

我想知道如何使用 Spring Boot 在 HashiCorp Consul 中共享一些属性,我读到有依赖性 'spring-cloud-consul-config' 但我找不到如何从那里加载包含所有属性文件的文件夹。

使用 Spring 云配置服务器这是可能的,例如:

spring:  
  profiles:
    active: native
  cloud:
    config:
      server:
        native: 
          searchLocations: file:C:/springbootapp/properties/

但是,如何在 Spring Cloud Config Consul 中执行?

假设您在标准端口上有 consul 运行,使用 spring 启动不需要太多配置。整个代码粘贴在下面(没有其他配置文件)。

对我来说棘手的部分是弄清楚 key/values 应该如何存储在 consul 中以便 spring 启动应用程序可见。文档中有一些信息,但我认为它有点误导。

为了回答您的问题,我将值放在 consul 中的键 "config/bootstrap/key1" 下,以使以下示例有效。

这是对我有用的示例代码:

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.3.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-all</artifactId>
    <version>1.0.0.M5</version>
</dependency>

Application.java

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class Application {

    @Autowired
    private Environment env;

    @RequestMapping("/")
    public String home() {
        return env.getProperty("key1");
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}