当前位置: 首页 > news >正文

【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate

微服务架构是What??

微服务架构是一种架构模式,它提出将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。

每个服务允许在其独立的进程中,服务于服务间采用轻量级的通信机制互相协作(通常是Http协议的RESTful API或RPC协议)。

每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建

SpringCloud

SpringCloud更像是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶

其中包括了:服务注册与发现、服务调用、服务熔断、负载均衡、服务降级、服务消息队列、配置中心管、服务网关、服务监控、全链路追踪、自动化构建部署、服务定时任务调度操作

SpringCloud 技术栈

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

创建SpringCloud

通常由一个大的maven项目中包括子项目:

maven主项目:

​ springboot项目2(集成SpringCloud等jar包);

​ springboot项目2(集成SpringCloud等jar包);

当所有子项目组合起来就是SpringCloud;

SpringCloud项目的版本控制非常严苛。请依据版本来管理其他所依赖框架的版本

RestTemplate

  • HttpClient 的实现接口

使用restTemplate访问restful接口非常的简单粗暴无脑

(url,requestMap,ResponseBean.class)这三个参数分别代表:

  1. REST请求地址
  2. 请求参数
  3. HTTP响应转换被转换成的对象类型
@Slf4j
@RestController
public class OrderController {public static final String PAYMNT_URL = "http://localhost:8001";@Resourceprivate RestTemplate restTemplate;@GetMapping("/consumer/payment/create")public CommonResult<Payment> create(Payment payment){return restTemplate.postForObject(PAYMNT_URL+"/payment/create",payment,CommonResult.class);}@GetMapping("/consumer/payment/get/{id}")public CommonResult<Payment> getPayment(@PathVariable("id") Long id){return restTemplate.getForObject(PAYMNT_URL+"/payment/get/"+id,CommonResult.class);}
}

踩坑

发送请求,提示请求成功

{"code": 200,"message": "插入数据库成功","data": 1
}

但是数据为回填为null

请注意在对数据库操作前,两个模块之间接收参数是否使用RequestBody注解接收了!

两模块之间接收消息走的是json,若不使用注解,将会造成数据丢失

@PostMapping("/create")
public CommonResult create(@RequestBody Payment payment){int result = paymentService.create(payment);log.info("********插入结果:"+result);if (result>0){return new CommonResult(200,"插入数据库成功",result);}else{return new CommonResult(500,"插入数据库失败",null);}
}

🥸🏏SpringCloud微服务专栏

  1. 【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate

💕👉博客专栏

  • Golang专栏-包含基础、Gin、Goam等知识
  • 云原生专栏-包含k8s、docker等知识
  • 从0开始学习云计算-华为HCIP证书
  • JUC专栏-带你快速领悟JUC的知识!
  • JVM专栏-深入Java虚拟机,理解JVM的原理
  • 基于Java研究 数据结构与算法-包含贪心算法、加权图、最短路径算法等知识
  • Docker专栏-上手热门容器技术Docker
  • SpringBoot专栏-学习SpringBoot快速开发后端
  • 项目管理工具的学习-设计技术:Maven、Git、Gradle等相关管理工具
  • JavaSE-全面了解Java基础
  • JS专栏-使用JS作的一部分实例~
  • 使用CSS所作的一部分案例
http://www.dtcms.com/a/445704.html

相关文章:

  • leetcode 79 单词搜索
  • 站长之家官网查询电子商务网站建设与实践上机指导
  • 二叉树实战笔记:结构、遍历、接口与 OJ 实战
  • 哈尔滨php网站开发公司设置网站默认首页
  • 华为OD机试C卷 - 分披萨 - 贪心 DFS - (Java C++ JavaScript Python)
  • 仿照STM32 HAL库设计思想使用FreeRTOS实现异步非阻塞式设备驱动
  • 铜川做网站电话网页设计规范
  • ssc-FinLLM 金融大模型 相关链接
  • 二叉排序树(建树、查找、删除)
  • Linux学习笔记--i2cget 命令
  • 网站建设的标签指的是响应式网页设计图片
  • 用 CodeBuddy CLI + Prompt,从零到可运行:前后端混合管理系统的高效实战
  • 电源——电荷泵详解
  • 榆林国贸网站建设网站的关键词挖掘方式
  • 从思路到落地:用 Redis 搭建超低延迟在线特征存储库
  • sosdp
  • 快速了解BERT
  • 在线Deflate压缩工具(支持添加zlib头及无zlib头模式)
  • 第14节-增强表结构-ALTER-TABLE
  • Ubuntu之apt更新源
  • T527 IR-RX 调试
  • 低成本能谱仪设计:基于分立器件的模拟前端与数字后端实现方案
  • 计算机视觉的数据收集与标注
  • LeetCode:92.最小路径和
  • 百度竞价推广属于什么广告广东网站se0优化公司
  • Anaconda路径配置
  • GitHub 热榜项目 - 日榜(2025-10-05)
  • java中Math.random()和random()方法区别
  • Django SimpleUI 详解:现代化的Django Admin界面美化方案
  • 网站开发客户流程 6个阶段简述常用的网站开发软件