Spring Cloud整合Spring Boot(服务提供者和服务消费者)

【软件架构】Spring Boot和Spring Cloud 的区别与联系 Spring Boot 是一个开源的 Java 基础框架,旨在简化新 Spring 应用的初始搭建以及开发过程。它使用了约定优于配置的理念,旨在通过尽可能少的配置来快速构建和开发 Spring 应用程序。Spring Boot 通过提供一系列预设的模板(Starter POMs),自动配置以及运行时的自我检查机制,极大地简化了Spring应用的开发、配置、部署和监控。 阅读详情

Spring Boot 专栏:Spring Boot 从零单排
Spring Cloud 专栏:Spring Cloud 从零单排
GitHub:SpringCloudDemo
Gitee:SpringCloudDemo

0. 开发环境

  • IDE:IntelliJ IDEA 2017.1 x64

  • jdk:1.8.0_91

  • Spring Boot:2.0.9.RELEASE

  • Spring Cloud:Finchley.RELEASE

1. 新建父Maven工程

1.1 新建Maven工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 删除src文件夹

在这里插入图片描述

1.3 引入依赖

父Maven工程pom文件定义为父pom文件,并引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.wbnull</groupId>
    <artifactId>spring-cloud-demo</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.9.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. 新建Spring Boot服务提供者

2.1 新建Spring Boot服务

右键SpringCloudDemo–>New–>Module,选择Maven项目
在这里插入图片描述
在这里插入图片描述

2.2 引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-boot-provider</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>cn.wbnull</groupId>
        <artifactId>spring-cloud-demo</artifactId>
        <version>1.0.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

2.3 新建Spring Boot入口类

package cn.wbnull.springbootprovider;

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

@SpringBootApplication
public class SpringBootProviderApplication {

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

2.4 新建application.yml

resources 文件夹下新建application.yml

server:
  port: 8081
  servlet:
    context-path: /springbootprovider

spring:
  application:
    name: spring-boot-provider

2.5 新建控制器类

package cn.wbnull.springbootprovider.controller;

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

@RestController
@Scope("prototype")
public class GatewayController {

    @GetMapping(value = "/gateway")
    public String gateway() throws Exception {
        return "hello world,this is spring-boot-provider";
    }
}

2.6 目录结构

Spring Boot 服务目录结构如下
在这里插入图片描述

3. 新建Spring Boot服务消费者

3.1 新建Spring Boot消费者

与创建Spring Boot服务提供者类似,新建Spring Boot服务消费者
在这里插入图片描述

3.2 引入依赖

与Spring Boot服务提供者依赖类似

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-boot-consumer</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>cn.wbnull</groupId>
        <artifactId>spring-cloud-demo</artifactId>
        <version>1.0.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

3.3 新建Spring Boot入口类

这里要注意,与Spring Boot服务提供者入口类不同,服务消费者入口类新增了一段代码。

RestTemplate是一个对HTTP请求进行了封装的类,借助RestTemplate,Spring应用能够方便地使用REST资源。

package cn.wbnull.springbootconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class SpringBootConsumerApplication {

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

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

3.4 新建application.yml

server:
  port: 8082
  servlet:
    context-path: /springbootconsumer

spring:
  application:
    name: spring-boot-consumer

3.5 新建控制器类

这里的gateway()方法没有自己的实现,而是去调用了服务提供者的gateway()方法。

package cn.wbnull.springbootconsumer.controller;

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

@RestController
@Scope("prototype")
public class GatewayController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/gateway")
    public String gateway() throws Exception {
        return restTemplate.getForObject("http://localhost:8081/springbootprovider/gateway", String.class);
    }
}

4. 测试

我们先启动服务提供者,再启动服务消费者,然后浏览器访问 http://127.0.0.1:8082/springbootconsumer/gateway ,获取到正确结果。到这,一个简单Spring Cloud 项目的服务提供者和服务消费者就完成了。
在这里插入图片描述


微信:https://mp.weixin.qq.com/s/7ZrgoRyAcs7agzpVtsWe4w
微博:https://weibo.com/ttarticle/p/show?id=2309404365477253117454
知乎:https://zhuanlan.zhihu.com/p/63925470



Springboot+SpringCloud具体使用 突然有一天,服务C中出了bug跑不动了,但是服务A仍然在被访问,但是每当调用服务C的时候就停在那了,然后程序依然在跑,JVM内存就一直不会回收分给这段程序的空间,随着访问量的增加,JVM的内存会一直被占着,这就会极大影响JVM内存容量,会导致JVM内存不足。此时服务降级就会让服务B调用的过程中不再去调用服务C,这样调用完服务B后,就直接返回响应结果,尽管响应的结果是不完整的,但是可以让程序可以成功的跑完,不会占用JVM内存。什么是负载均衡:负载均衡可以提高我们服务的可用性,让我们的服务更稳定。 阅读详情

相关推荐

Spring Boot 与 Spring Cloud 深度 Mape 之八】异步通信与解耦:Spring Cloud Stream 整合消息队列 (RabbitMQ/Kafka) 实战

Sentinel 通过资源名 (Resource Name)来识别和保护资源。Spring MVC 的 Controller 端点会自动注册为资源,资源名是(例如后续会讲到,开启 Feign 集成后,Feign 接口方法也会自动注册为资源。但有时我们需要更细粒度地保护某个方法或代码块,或者自定义资源名以及处理逻辑。这时可以使用注解。修改//!!导入注解!!//!!导入 BlockException!!// 使用 @SentinelResource 保护方法,并自定义资源名。

weixin_52568491的博客 1332

SpringBoot+SpringCloud微服务搭建全过程(一)

1. Spring Cloud就是微服务系统架构的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。2. 在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、负载均衡、断路器、数据监控等操作,而Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。1. 简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。

m0_37951794的博客 5961

Spring boot与Spring cloud 之间的关系

1、Spring boot 是 Spring (AOP和IOC)的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务; Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring Cloud是多个Spring boot微服务的集合,当然不是简单的集合,那么就涉及到微服务的七大原则:1)、围绕业务概念建模经验表明,围绕业务的限界上下文定义的接口,比围绕技术概念定义的接口更加稳定。针对系统如何工作这个领域进行建模,不仅可以帮助我们形成更稳定的接口,也

CaseyWei 5884

springboot整合springcloud

1.创建一个新的project 2.删除项目中多余的目录和文件 3.在项目中添加module,创建eureka-server 下一步 下一步 下一步 下一步

淡水中的wawa的博客 2348

【Spring Boot 与 Spring Cloud 深度 Mape 之十】体系整合、部署运维与进阶展望

提供了快速构建、自动配置的坚实基础。Nacos解决了服务注册发现和分布式配置管理的核心问题。OpenFeign让服务间同步调用变得优雅而简单。统一了系统入口,提供了强大的路由和过滤能力。Sentinel为服务提供了流量控制和熔断降级的坚实保障。简化了构建异步、消息驱动的应用。赋予了我们洞察分布式调用链的能力。同时,我们也探讨了微服务的现代化部署 (Docker/K8s)安全分布式事务等关键的进阶主题,并了解了服务网格这一新兴的治理模式。

weixin_52568491的博客 1086

【信息科学与工程学】【通信工程】第四十九篇 通信网络参数02

通过思维模型的系统性应用,职业选择将从“概率博弈”升级为“精准导航”,在复杂环境中持续锁定高价值赛道。​:通过职业测评与成就事件分析,发现她的核心优势是创意策划(曾主导校园活动获好评);​:去除无关信息(如社会期待、短期收入波动),聚焦自身核心能力与市场需求的重合点。​:辅导员引导她忽略“必须考公”的家庭压力,放弃“短期高薪”等无关选项;​:将职业选项映射到“兴趣-能力-市场需求”三维坐标中,识别差异化定位。​:回归职业选择的本源——“创造价值的方式”,而非表面标签。

weixin_49199313的博客 1306

ideal新建springboot工程_Spring Cloud整合Spring Boot(服务提供者和服务消费者)

0. 开发环境 IDE:IntelliJ IDEA 2017.1 x64 jdk:1.8.0_91 Spring Boot:2.0.9.RELEASE Spring Cloud:Finchley.RELEASE 1. 新建父Maven工程1.1 新建Maven工程1.2 删除src文件夹1.3 引入依赖父Maven工程pom文件定义为父pom文件,并引入依赖<?xml version="1....

weixin_39861882的博客 105

Spring Boot与Nacos、Spring Cloud Gateway的微服务整合实践

Spring Boot是一个开源Java基础框架,由Pivotal团队提供,旨在简化Spring应用的初始搭建以及开发过程。它使用了特定的方式来配置Spring,使得开发者能够快速启动并运行Spring应用。Spring Boot的核心特性包括独立运行的特性,内置Tomcat、Jetty或Undertow容器,无需部署WAR文件,以及提供了大量的"Starters"来简化构建配置。在Spring Cloud Gateway中,路由是基础的构建块。一个路由将一个请求按照一定的规则转发到特定的目的地。

weixin_35516273的博客 956

Spring Boot整合Spring Cloud实现微服务架构学习(一)

  本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接出处:https://blog.youkuaiyun.com/qq_3076499,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜“556723462”领红包,领到大红包的小伙伴...

从放弃到开始 2万+

构建微服务架构:Spring Boot、Spring Cloud与Feign实战

Spring Boot由Pivotal团队提供,旨在简化Spring应用的初始搭建以及开发过程。它使用“约定优于配置”的原则,提供一系列大型项目中常见的默认配置,以减少开发者的配置工作。定义一个服务接口使用注解指定服务的名称,然后定义调用远程服务的方法:在调用远程服务时,可以通过注入这个接口的方式,像调用本地方法一样调用远程服务:@Service@Autowired以上代码定义了一个名为的接口,通过注解指定远程服务的名称,并在接口中定义了一个请求远程服务。

weixin_36059856的博客 711

量化人必看|miniQMT踩坑记:回测太慢?一招教你把行情数据“搬回家”!

这篇文章主要聊的是。

奔跑的蜗牛 3476

【Spring Boot 3】整合nacos + Dubbo3 的Spring cloud Alibaba项目

这里写自定义目录标题前言1、项目结构2、搭建nacos注册中心、配置中心3、项目依赖4、common模块5、provider服务提供者pom文件bootstrap.yml在nacos中添加配置启动类UserServiceImplconsumer服务消费者pom文件bootstrap.ymlnacos配置启动类UserController测试END 前言 在springboot3不再兼容jdk8的时候,随之而来的便是各种框架不兼容引发的bug,虽然各位框架的开发大佬在加班加点的更新适配,但能够创建一个适用并且

m0_51079637的博客 3842

Python+OpenCV实战:5分钟搞定机械臂手眼标定(眼在手上模式)

本文详细介绍了使用Python和OpenCV在5分钟内完成机械臂手眼标定(眼在手上模式)的实战教程。通过解析相机坐标系与机械臂基坐标系的转换关系,提供从数据采集到标定矩阵计算的全流程代码实现,帮助开发者快速解决AX=XB问题,提升机械臂视觉引导精度。

weixin_33670786的博客 497

Nacos 整合 spring boot 和 spring cloud

目录Nacos搭建Nacos是什么Nacos搭建整合springBoot整合配置中心启动服务发现整合springCloud整合配置中心启动服务发现本案例github地址 Nacos搭建 Nacos是什么 服务发现和服务健康监测 可以作为微服务的注册中心,为其他的微服务提供注册与发现 动态配置服务 可以对配置文件进行动态的刷新 Nacos搭建 下载Nacos的安装包 gitHub下载地址 由于github下载过于缓慢,这里提供一份1.3.1的百度云下载地址 百度云下载地址 提取码 :d14q 启动服务

weixin_42176677的博客 2236

精确时钟同步协议ptp/IEEE-1588v2协议-------(1)简介

ptp, 1588V2, IEEE-1588, 精确时钟同步协议

meihualing的专栏 5356

【Halcon】双目立体视觉引导机械手有序抓取,案例分享

本文介绍了一个基于双目视觉的工件定位与抓取系统。该系统使用两个工业相机组成双目视觉系统,通过标定获取相机参数,采用模板匹配算法识别任意摆放且可能交叠的工件。重点阐述了三维坐标获取方法,特别是通过Z方向高度实现有序抓取的策略。文章详细说明了系统搭建、双目标定、模板创建等关键步骤,并展示了特征点匹配和定位结果。该案例为初学者和开发者提供了双目视觉系统的基本实现参考,展示了机器视觉与机械手协同工作的典型应用场景。

机器视觉从业者 2490

Spring Boot整合Spring Cloud

1.创建Maven父工程

Alisa的博客 383

从配置文件加载顺序揭秘:为什么你的logback.xml读不到application.yml?

本文深入解析了Spring Boot中logback.xml无法读取application.yml配置的原因,揭示了Spring Boot配置加载机制与日志系统初始化的时序问题。通过对比logback.xml与logback-spring.xml的差异,提供了使用springProperty标签和系统属性传递等解决方案,帮助开发者有效解决日志配置问题。

weixin_29214335的博客 364

Spring Boot集成Spring Cloud Eureka进行服务治理

Spring Cloud Eureka是Netflix开源的服务发现框架,它提供了服务注册中心的功能,允许服务实例在启动时向Eureka注册自己的信息,并定期发送心跳以表明自己的存活状态。其他服务可以通过Eureka Server查询到这些服务的信息,实现服务的发现。除了服务注册与发现,Eureka Server还提供了服务监控的功能,可以查看服务实例的健康状况和活跃度。服务治理是指在微服务架构中,对服务的生命周期进行管理,包括服务的注册、发现、配置、监控等。服务治理的目的是确保服务的高可用性和可维护性。

技术研究中心 1229

Vue3 - 详细实现移动端H5网页调用摄像头拍照功能,微信公众号网页h5页面打开本地摄像头并点击按钮照相,vue3获取摄像头画面执行拍照保存,调整摄像头前置后置抓拍图片给用户展示或保存手机上传服务器

vue3,H5网页,手机移动端,vue3摄像头拍照,前端h5调用手机摄像头,移动端网页调用摄像头,H5实现手机拍照和选择上传,调用本地摄像头实现拍照,vue3调用摄像头拍照,手机浏览器开启摄像头并进行拍照,H5移动端网页中调用手机摄像头,H5实现web调用摄像头在线照相,vue3h5调用摄像头,微信公众号网页如何调用摄像头拍照,公众号H5页面实现打开摄像头照相,怎么生成临时图片,vue3项目调用摄像头实现拍照功能,摄像头打不开没反应,浏览器不兼容怎么办,摄像头权限不弹出,只能在本地运行,拒绝权限后怎么办,

🏆 前端领域优质创作者 1万+

知识图谱构建中的数据清洗:AI原生应用高质量图谱的前提

数据清洗是知识图谱构建的核心前置环节,直接决定AI原生应用(如智能问答、个性化推荐、决策支持系统)的图谱质量与应用效能。本文以第一性原理为起点,系统解析数据清洗的理论框架、技术架构与工程实践,覆盖从多源异构数据的噪声检测到高质量知识三元组(实体-关系-实体)生成的全流程。通过层次化概念映射(专家→中级→入门)、数学形式化建模及工业级案例分析,揭示数据清洗在解决实体歧义、关系冲突、结构不一致等关键问题中的技术逻辑,并展望基于大模型的智能清洗范式演化。Completeness(完整性)

移动开发前沿的博客 404

spring boot整合 spring cloud

1、工程结构图 2、eureka 配置 ①,pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <versio...

myfirstuser的博客 175

【STM32Cube_14】使用硬件I2C读写环境光强度传感器(BH1750)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设读取环境光强度传感器数据(BH1750)

Mculover666的博客(嵌入式) 7242

Spring Cloud Contract终极指南:如何实现消费者驱动契约测试

Spring Cloud Contract是一个强大的开源框架,专为微服务架构中的消费者驱动契约测试而设计。它为分布式系统中的服务间通信提供了可靠的契约验证机制,确保生产者和消费者之间的API契约始终保持一致。通过Spring Cloud Contract,开发团队可以避免集成测试中的常见陷阱,实现更快速、更可靠的微服务开发。 ## 什么是消费者驱动契约测试? 🤔 在微服务架构中,服务之间的

gitblog_00409的博客 1000

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

spring、spring-boot和-spring-cloud的关系

想要了解 Spring Cloud 和 Spring Boot 是如何配合使用的,就必须先要了解 Spring Boot 的 Starter 机制。 Spring Boot Starter Spring Boot Starter 是 Spirng Boot 约定优于配置理念的最佳实现。Spring Boot Starter 有两个核心组件:自动配置代码和提供自动配置模块及其它有用的依赖。也就意味着...

Lzc的博客 1727

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践

JVM通过本文的实践,我们成功地将Spring Boot与Spring Cloud整合,构建了一个完整的微服务系统。从服务注册与发现到服务间通信,再到监控与运维,Spring Cloud提供了丰富的组件来简化微服务的开发与部署。未来,我们可以进一步探索Spring Cloud的其他组件,如Config Server、Zuul网关等,以构建更加复杂的微服务架构。

intwei的博客 1323

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Spring Boot实现文件上传与下载
下一篇: Spring Cloud 服务注册与发现 Eureka
程序员null
博客等级 码龄11年 1304粉丝 124原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值