首页 > 其他分享 >使用Spring Boot集成Consul

使用Spring Boot集成Consul

时间:2024-07-13 15:18:35浏览次数:7  
标签:Spring Consul Boot springframework import org

使用Spring Boot集成Consul

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!

在微服务架构中,服务发现和配置管理是两个非常重要的组件。HashiCorp Consul 是一个支持多数据中心的服务发现和配置工具,它提供了服务注册和发现、健康检查、Key/Value 存储等功能。Spring Boot 提供了对 Consul 的良好支持,可以轻松集成 Consul 以实现服务注册和配置管理。本文将详细介绍如何使用 Spring Boot 集成 Consul。

一、环境准备

在开始之前,我们需要确保以下环境已经搭建好:

  1. JDK 8 或以上版本
  2. Maven 3 或以上版本
  3. Consul 服务器

二、创建 Spring Boot 项目

首先,我们使用 Spring Initializr 创建一个新的 Spring Boot 项目,并添加必要的依赖。

  1. 打开 Spring Initializr
  2. 输入项目信息:
    • Group: cn.juwatech
    • Artifact: spring-boot-consul
  3. 添加依赖:
    • Spring Boot DevTools
    • Spring Web
    • Spring Boot Actuator
    • Spring Cloud Starter Consul Discovery
    • Spring Cloud Starter Consul Config

点击“Generate”按钮生成项目并下载,然后解压项目文件。

三、配置 Consul

在进行 Spring Boot 与 Consul 的集成之前,需要确保 Consul 服务器已经启动。可以通过以下命令启动本地 Consul 服务器:

consul agent -dev

此命令将在开发模式下启动 Consul 服务器。

四、配置 Spring Boot 应用

接下来,我们需要配置 Spring Boot 应用以使用 Consul 进行服务注册和配置管理。

  1. 打开 src/main/resources/application.properties 文件,添加以下配置:
spring.application.name=spring-boot-consul
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.config.enabled=true
management.endpoints.web.exposure.include=*
  1. src/main/java/cn/juwatech/springbootconsul 目录下创建一个新的主类 SpringBootConsulApplication.java
package cn.juwatech.springbootconsul;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootConsulApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootConsulApplication.class, args);
    }
}

五、创建服务提供者和消费者

接下来,我们创建一个简单的服务提供者和消费者,以演示服务注册和发现。

  1. 创建服务提供者

src/main/java/cn/juwatech/springbootconsul 目录下创建一个新的控制器 ProviderController.java

package cn.juwatech.springbootconsul;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProviderController {

    @GetMapping("/provider")
    public String provideService() {
        return "Service provided by Provider";
    }
}
  1. 创建服务消费者

src/main/java/cn/juwatech/springbootconsul 目录下创建一个新的控制器 ConsumerController.java

package cn.juwatech.springbootconsul;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/consume")
    public String consumeService() {
        return restTemplate.getForObject("http://spring-boot-consul/provider", String.class);
    }
}
  1. 配置 RestTemplate Bean

SpringBootConsulApplication 类中添加一个 RestTemplate Bean:

package cn.juwatech.springbootconsul;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class AppConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

六、运行并验证

启动 Spring Boot 应用程序,并验证服务注册和发现功能。

  1. 运行 SpringBootConsulApplication 类,启动 Spring Boot 应用程序。
  2. 打开浏览器,访问 http://localhost:8500,进入 Consul UI 界面,可以看到 spring-boot-consul 服务已经注册。
  3. 访问 http://localhost:8080/consume,验证服务消费者是否能够成功调用服务提供者的接口。

七、使用 Consul 配置中心

Consul 还提供了配置中心功能,可以将配置存储在 Consul 的 Key/Value 存储中。

  1. 在 Consul UI 界面中,添加一个新的 Key config/spring-boot-consul/data,值为以下内容:
message: "Hello from Consul Config"
  1. 修改 ProviderController 类,添加一个新的端点以读取配置:
package cn.juwatech.springbootconsul;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProviderController {

    @Value("${message:Default Hello}")
    private String message;

    @GetMapping("/provider")
    public String provideService() {
        return "Service provided by Provider";
    }

    @GetMapping("/message")
    public String getMessage() {
        return message;
    }
}
  1. 重新启动 Spring Boot 应用程序,访问 http://localhost:8080/message,可以看到从 Consul 配置中心读取的配置信息。

通过以上步骤,我们成功地将 Spring Boot 应用与 Consul 集成,实现了服务注册、服务发现和配置管理。Consul 强大的功能和 Spring Boot 的便捷集成,使得微服务架构的实现变得更加容易和高效。

著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

标签:Spring,Consul,Boot,springframework,import,org
From: https://www.cnblogs.com/szk123456/p/18300158

相关文章

  • 基于springboot+vue.js+uniapp的江西郊医院血库管理系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • day01-springcloud-nacos
    SpringCloud0101概述导入:单体项目-》分布式项目(微服务)02.我们今天学习目标:单体项目-》分布式项目(微服务)众多微服务如何管理、相互调用的注册中心-Eureka和NacosEureka和Nacos对比1.认识微服务随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架......
  • 毕业设计-基于Springboot+Vue的学生就业管理系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89455021基于SpringBoot+Vue的学生就业管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1N3CA49jwUDd2SmjWvM6w9w?pw......
  • 毕业设计-基于Springboot+Vue的招聘信息管理系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89456194基于SpringBoot+Vue的招聘信息管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1quUpQqUcXVzXV9H4wDmqLw?pw......
  • Spring Boot 框架知识汇总
    1、什么是SpringBoot?通过SpringBoot,可以轻松地创建独立的,基于生产级别的Spring的应用程序,您可以“运行"它们。大多数SpringBoot应用程序需要最少的Spring配置,集成了大量常用的第三方库配置,使得这些库在SpringBoot应用中几乎可以零配置地开箱即用。2、SpringBoot的特征?......
  • 黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4
    你好,我是Qiuner.为帮助别人少走弯路和记录自己编程学习过程而写博客这是我的githubhttps://github.com/Qiuner⭐️giteehttps://gitee.com/Qiuner......
  • consul 作为服务注册发现和配置中心
    consul同nacos一样也可以完成【服务注册与发现】、【分布式配置中心】的功能,但企业主流还是alibaba的nacos,所以consul只是简单介绍下使用下载安装和启动地址:https://developer.hashicorp.com/consul/install?product_intent=consul#windows(选386)解压后只有一个exe......
  • 基于java+springboot+vue实现的作业管理系统(文末源码+Lw)110
    基于SpringBoot+Vue的实现的作业管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)功能描述:作业管理系统有管理员,教师,学生三个角色。教师和学生都可以进行注册然后再登录。学生可以修改自己的密码,查看和下载作业信息,并且可以提交自己写好的作业,并且可以......
  • 基于java+springboot+vue实现的新闻稿件管理系统(文末源码+Lw)109
     基于SpringBoot+Vue的实现的新闻稿件管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)系统功能:新闻稿件管理系统管理员功能有个人中心,用户管理,记者管理,审批员管理,新闻分类管理,新闻信息管理,系统管理等。记者发布新闻信息,审批员进行审核,用户进行查看。因......
  • 免费分享一套SpringBoot+Vue农产品在线销售(在线商城)管理系统【论文+源码+SQL脚本】,
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue农产品在线销售(在线商城)管理系统,分享下哈。项目介绍如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统......