前言
上篇讲到了SpringBoot和Consul搭建服务注册与发现,这篇主要描述SpringBoot整合Consul搭建配置中心。
整合
consul的注册中心是安装的服务器上,只需要搭建注册客户端就行了。
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring boot 单元测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--consul 注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!--consul 配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!--Spring Cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
启动类App.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* consul 配置中心客户端
*/
@EnableDiscoveryClient
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
配置文件创建boostrap.yml,而不是application.yml, 因为bootstrap.yml加载优先级比application.yml高。
spring:
application:
name: consul-config
cloud:
consul:
host: 192.168.126.156
port: 8500
# consul 服务注册
discovery:
# 服务名称
service-name: ${spring.application.name}
heartbeat:
enabled: true
# consul 配置中心
config:
format: yaml
enabled: true
# 配置前缀
prefix: /
# 默认位置
default-context: /
# key
data-key: data
# 自定义属性
name: terry
@RefreshScope可以动态刷新配置,稍后可以演示看看
@RestController
// 动态刷新配置
@RefreshScope
public class UserService {
@Value("${name}")
private String name;
@GetMapping("getUser")
public String getUser(){
return name;
}
}
启动项目
测试
此时访问服务效果
在不重启服务的情况下更改配置
访问Consul管理页:http://192.168.126.156:8500/。
创建key:data,Value:name: terry123
,如下:
此时访问成功