SpringBoot整合Consul
一、添加依赖
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.6.6</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- springboot web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.6</version>
</dependency>
<!-- springCloud consul配置中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
<version>3.1.0</version>
</dependency>
<!-- springCloud consul服务发现 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
二、在bootstrap.yml中配置
spring:
application:
name: consul-demo
cloud:
consul:
config:
format: yaml
三、在启动类增加@EnableDiscoveryClient注解
作用:让该服务放注册中心注册和从注册中心获取其他服务。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulApplication {
public static void main(String[] args) {
SpringApplication.run(ConsulApplication.class);
}
}
四、项目启动
(1)启动项目,如果发现下面的错误:
解决办法:添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.1</version>
</dependency>
(2)项目启动成功,发现consul实例的健康检查失败:
解决办法:添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.6.6</version>
</dependency>
五、测试
在consul里面配置
server:
port: 8081
test:
name: consul-demo
编写测试类,获取consul里面的属性。
@RestController
@RequestMapping("/test")
public class TestController {
@Value("${test.name}")
private String name;
@GetMapping("/getName")
public String getByName(){
return name;
}
}