使用 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);
}
}
我想知道如何使用 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);
}
}