Распределенная конфигурация с HashiCorp Consul и Spring Boot

Интересно, как поделиться некоторыми свойствами в HashiCorp Consul с помощью Spring Boot, я прочитал, что есть зависимость 'spring-cloud-consul-config', но я не смог найти, как оттуда загрузить папку со всеми файлами свойств.

С помощью Spring Cloud Config Server это возможно, например:

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

Но как это сделать в Spring Cloud Config Consul?

1 ответ

Решение

Предполагая, что у вас консул, работающий на стандартном порте, при использовании весенней загрузки не требуется много настроек. Весь код вставлен ниже (никаких других файлов конфигурации).

Для меня было непросто выяснить, как ключи / значения должны храниться в консуле, чтобы их можно было увидеть в приложении весенней загрузки. В документации есть некоторая информация, но я думаю, что она немного вводит в заблуждение.

Чтобы ответить на ваш вопрос, я поместил значения под ключом "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);
    }

}
Другие вопросы по тегам