Spring Cloud(微服务)学习篇(四)
Spring Cloud(微服务)学习篇(四)
1.nacos实现服务之间传参数
1.1 在dto包(shop-sms-api项目)中创建SmsDTO类
package com.zlz.shop.sms.api.dto;import lombok.Data;@Data
public class SmsDTO {private String tel;
}
1.2 复制SmsDTO类到shop-sms-server项目的dto包下面

1.3 更新SmsController类
1.3.1 加入如下代码
//演示传参数@RequestMapping("send2")public String send2(@RequestBody SmsDTO dto){log.info("执行短信发送 本次程序端口:{},发送的号码是:{}",port,dto.getTel());return "执行短信发送 本次程序端口:{}"+port;}
1.3.2 完整的smsController类代码
package com.zlz.controller;import com.zlz.dto.SmsDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@Slf4j
public class SmsController {@Value("${server.port}")private String port;@RequestMapping("send")public String send(){/*其中{}是输入后面就port的,里面可以有多个*/log.info("执行短信发送 本次程序端口:{}",port);return "执行短信发送 本次程序端口:{}"+port;}//演示传参数@RequestMapping("send2")public String send2(@RequestBody SmsDTO dto){log.info("执行短信发送 本次程序端口:{},发送的号码是:{}",port,dto.getTel());return "执行短信发送 本次程序端口:{}"+port;}
}
1.4 更新SmsService接口
1.4.1 加入的代码
@RequestMapping("send2")
//可以不写requsestBody
String send2(SmsDTO dto);
1.4.2 完整的SmsService接口代码
package com.zlz.shop.sms.api.service;
import com.zlz.shop.sms.api.dto.SmsDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;//一个服务对应一个接口,api是给别人的
@FeignClient("shop-sms") //填写注册中心微服务的名称,这里与application中的yml文件(server那里的)中的application.name名字一致
public interface SmsService {//根据定义的控制器方法来写接口,和server里面的SmsController是保持一致的@RequestMapping("send")String send();@RequestMapping("send2")//可以不写requsestBodyString send2(SmsDTO dto);
}
1.5 对shop-sms-api项目再次打包(install),因为里面数据变动了
1.5.1 双击install按钮

1.5.2 打包成功后的界面

1.6 启动端口号为8021的短信服务

1.7 更新UserController类
1.7.1 加入的代码
@RequestMapping("test3")public String t3(String tel){SmsDTO smsDTO = new SmsDTO();smsDTO.setTel(tel);String s=smsService.send2(smsDTO);return "用户服务调用短信服务 结果:"+s;}
1.7.2 完整的UserController类代码
package com.zlz.controller;import com.zlz.shop.sms.api.dto.SmsDTO;
import com.zlz.shop.sms.api.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class UserController {@AutowiredRestTemplate restTemplate;@RequestMapping("test")public String t(){//http://shop-sms/sendString s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
// String s=restTemplate.postForObject("http://127.0.0.1:8021/send", null, String.class);return "用户服务调用短信服务 结果:"+s;}//使用oepnFeign的方式发送短信@AutowiredSmsService smsService;@RequestMapping("test2")public String t2(){//http://shop-sms/sendString s=smsService.send();return "用户服务调用短信服务 结果:"+s;}@RequestMapping("test3")public String t3(String tel){SmsDTO smsDTO = new SmsDTO();smsDTO.setTel(tel);String s=smsService.send2(smsDTO);return "用户服务调用短信服务 结果:"+s;}
}
1.8 测试
1.8.1 启动用户服务

1.8.2 访问127.0.0.1:8010/test3后的界面

1.8.3 访问127.0.0.1:8010/test3后,控制台(短信服务)的打印信息

相关文章:
Spring Cloud(微服务)学习篇(四)
Spring Cloud(微服务)学习篇(四) 1.nacos实现服务之间传参数 1.1 在dto包(shop-sms-api项目)中创建SmsDTO类 package com.zlz.shop.sms.api.dto;import lombok.Data;Data public class SmsDTO {private String tel; }1.2 复制SmsDTO类到shop-sms-server项目的dto包下面 1.3 …...
【Java Pro】001-Java基础:面向对象
【Java Pro】001-Java基础:面向对象 文章目录【Java Pro】001-Java基础:面向对象一、面向对象1、什么是对象现实生活中的对象与程序中的对象2、什么是面向对象面向过程面向对象3、面向过程与面向对象的比较思想方面设计方式方面实现方式方面4、面向过程与…...
ElasticSearch从0到1——基础知识
1.ES是什么? 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能&…...
【面试系列】equals和==的区别
问题:两个对象值相同(x.equals(y) true),但是可能存在hashCode不同吗? 的定义 比较的是两个对象的内存地址,相等则意味着内存地址一样。 对象的equals方法 Object#equals public boolean equals(Object obj) {return (this obj);}Stri…...
存在重复元素模块-三道题
文章目录存在重复元素217. 存在重复元素219. 存在重复元素 II220. 存在重复元素 III (SortedList二分)小结存在重复元素 217. 存在重复元素 题目链接:217. 存在重复元素 题目大意:给你一个整数数组 nums 。如果任一值在数组中出…...
3种方法删除7-Zip压缩包的密码
7-Zip压缩软件是一款完全免费且开源的软件,不仅能压缩和解压7-Zip压缩包,还能给压缩包设置打开密码。 有些小伙伴可能会遇到这样的问题,7-Zip压缩包设置密码后,过了一段时间不需要密码保护了,或者一不小心忘记了密码&…...
Codeforces Round 855 (Div. 3)(A~F)
A. Is It a Cat?定义满足条件的字符串为:其中仅可能含有meow四种字母的大小写,而且相同种类的字母必须挨在一起,四种字母的顺序必须按照meow排列。给出一个字母串,求是否满足条件。思路:感觉是个很麻烦的模拟。首先把…...
【SpringCloud】SpringCloud详解之Feign实战
目录前言SpringCloud Feign远程服务调用一.需求二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用(order服务内编写)四.使用Feign远程调用(order服务内配置)五.自定义Feign配置(order服务内配置)六.Feign配置日志(oder服务内配置)七.Feign调优(order服务内配置)八.抽…...
tuts4you上lena‘s40个crackme(1)
本来是不打算写文章了,因为懒,想以后通过录屏的形式保存一下自己学的路程。但奈何开学后一直没找到机会,在宿舍也不愿意大吼大叫的讲东西,只好再写写文章了 最近学了一些汇编语言和逆向工程,所以就想通过这40给题目来看…...
研讨会回顾 | Perforce版本控制工具Helix Core入华十年,携手龙智赋能企业大规模研发
2023年2月28日,龙智联合全球领先的数字资产管理工具厂商Perforce共同举办Perforce on Tour网络研讨会,主题为“赋能‘大’研发,助力‘快’交付”。 作为Perforce Helix Core产品在中国地区的唯一授权合作伙伴,龙智董事长何明女士为…...
C++ vscode 开发环境搭建
C vscode 开发环境搭建 笔记内容: C vscode 开发环境搭建准备了解g命令编译调试掌握使用launch.json和tasks.json配置文件编译调试了解使用cmake构建 git: https://github.com/weichangk/hellocpp/tree/master/vscodecmakecpp 环境搭建准备 安装vscode安装qt&a…...
ANR系列(二)——ANR监听方案之SyncBarrier
前言 在项目中经常遇到了手机假死问题,无规律的偶现问题,大量频繁随机操作后,便会出现假死,整个应用无法操作,不会响应事件,会发生各种奇怪的ANR,且trace不固定。而SyncBarrier是其中的罪魁祸首…...
【完美解决】应用程序无法正常启动(0xc000007b)请单击“确定”关闭应用程序
年期安装CorelDRAW X8 (64-Bit),安装完成之后运行一点毛病都没有,可是过了两三个月,再打开就出现“应用程序无法正常启动(0xc000007b)请单击“确定”关闭应用程序”这个提示框,如下图示 出现这个问题我就上网查找,无非…...
.NET基础加强第二课--静态成员,静态类
类 实例类 默认是实例类 静态类 在类前加上static ,就是静态类 静态类中,所有包含的成员必须是静态成员 实例成员是属于具体某个对象的 举例代码 Person p1 new Person(); p1.Age 20; p1.Name “张三”; class Person { public string Name { get; set;…...
【UML+OOPC嵌入式C语言开发】使用C语言实现一个面向对象语言才能够实现的类
文章目录简述OOPC开发环境知识讲解函数示例类的实现示例接口实现示例(前面两部分有点无聊,如果大家没兴趣看可以直接从知识讲解开始看) 简述OOPC oopc,是一种轻量级的面向对象的C语言编程框架, LW_OOPC是Light-Weight …...
软件测试自动化Java篇【Selenium+Junit 5】
文章目录Selenium环境部署自动化测试例子常见的元素操作窗口等待浏览器的操作弹窗选择器执行脚本文件上传浏览器参数Junit 5导入依赖Junit 4 和 Junit5 注解对比断言测试顺序参数化单参数多参数动态参数测试套件指定类来运行测试用例指定包名来运行包下测试用例Selenium 为什么…...
Clip:学习笔记
Clip 文章目录Clip前言一、原理1.1 摘要1.2 引言1.3 方法1.4 实验1.4.1 zero-shot Transfer1.4.2 PROMPT ENGINEERING AND ENSEMBLING1.5 局限性二、总结前言 阅读论文: Learning Transferable Visual Models From Natural Language Supervision CLIP 论文逐段精读…...
STM32CubexMX与FreeRTOS学习
目录 LED与EXTI配置 基本定时器使用 软件定时器 在HAL库中实现printf 重点--记得自己添加头文件 队列实现 二值信号量实现 计数信号量实现 DMA实现 ADC配置 RTC配置 看门狗 窗口看门狗 FreeRTOS结合MX软件开发,基础配置直接生成,我们只…...
Master Slave 主从同步错误 Slave_IO_Running:NO/Slave_SQL_Running: No
Master Slave 主从同步错误 Slave_IO_Running:NO Slave_SQL_Running:Yes #在Slave库上查看状态 mysql> show slave status\G Slave_IO_Running: No Slave_SQL_Running: Yes #重启master库:service mysqld restart mysql> show master status; ------------…...
JavaScript函数之prototype原型和原型链
文章目录1. 原型2. 显式和隐式原型3. 原型链3.1 访问顺序4. instanceof4.1 如何判断1. 原型 函数的prototype属性 每个函数都有一个prototype属性,它默认指向一个Object空对象(即:原型对象)。原型对象中有一个属性constructor&a…...
大疆上云API Demo停更了,我们手里的老项目该怎么办?(附迁移思路与安全加固建议)
大疆上云API停更后:老项目的风险评估与迁移实战指南 当官方宣布停止维护某个关键组件时,技术团队面临的不仅是代码层面的挑战,更是对系统全生命周期管理能力的考验。最近大疆上云API Demo的停更公告,让许多依赖该接口的无人机应用…...
跨境电商卖家的成长路径:你在哪个阶段?爆单AI选品后开始爆发了吗?
不是所有卖家都叫“跨境电商卖家”,有人在做生意,有人在混日子做跨境电商久了,我发现一个有意思的现象:同样是“跨境电商卖家”,不同的人,状态完全不一样。有人每天研究数据、优化流程、复盘总结࿰…...
联合仿真模型验证:Carsim + 车辆动力学模型(十四自由度)实践
联合仿真模型验证Carsim车辆动力学模型(十四自由度)软件使用:Carsim2019.0Matlab/Simulink 适用场景:采用模块化建模方法,搭建14自由度整车模型,将此模型与carsim进行联合仿真模型验证。 (模型和 carsim存在一定误差) 产品 simulink源码包含如下模块:工况…...
低成本DIY智能小车核心模块:用STM32和TB6612实现带编码器的定速巡航功能
低成本DIY智能小车核心模块:用STM32和TB6612实现带编码器的定速巡航功能 周末在工作室调试新做的智能小车时,突然意识到一个有趣的现象:当我们给电机设定固定转速后,实际速度总会因为电池电压波动、负载变化等因素产生偏差。这让…...
YOLOv12惊艳效果展示:注意力机制让目标检测更精准
YOLOv12惊艳效果展示:注意力机制让目标检测更精准 1. 突破性效果预览 YOLOv12的出现彻底改变了我们对实时目标检测的认知。这款基于注意力机制的全新架构,在保持YOLO系列标志性速度的同时,将检测精度推向了前所未有的高度。让我们先看几个令…...
ArcGIS里坐标系搞混了怎么办?一份拯救‘空间参考错误’数据的实战排查指南
ArcGIS坐标系混乱急救手册:从定位问题到精准修复的全流程指南 当你在ArcGIS中加载多个来源的空间数据时,是否遇到过这些令人抓狂的场景?精心收集的行政边界图层突然跑到了撒哈拉沙漠;水文监测点数据明明采集于长江流域,…...
Stata实战:如何用Probit模型分析二分类数据(附完整代码与边际效应计算)
Stata实战:Probit模型在二分类数据分析中的完整应用指南 引言:为什么选择Probit模型? 在社会科学和经济学研究中,我们经常会遇到因变量为二分类(0/1)的情况。比如"是否购买某产品"、"是否选…...
告别打包烦恼:Qt Installer Framework 4.6 保姆级教程,从配置到生成exe安装包
Qt Installer Framework 4.6 终极实战指南:从零构建专业级安装包 当你终于完成了一个Qt应用的开发,编译了Release版本,甚至用windeployqt处理了依赖,接下来面临的挑战是如何将这些文件打包成一个专业的安装程序。这正是Qt Instal…...
运维实战:Z-Image-Turbo_Sugar脸部Lora模型在Linux生产环境的持续部署与监控
运维实战:Z-Image-Turbo_Sugar脸部Lora模型在Linux生产环境的持续部署与监控 作为一名在AI和智能硬件领域摸爬滚打了十多年的工程师,我见过太多“模型跑得欢,运维跑断腿”的场景。一个模型在开发者的笔记本上可能表现完美,但一旦…...
Qwen3-32B-Chat镜像深度优化:OpenClaw任务执行效率提升30%
Qwen3-32B-Chat镜像深度优化:OpenClaw任务执行效率提升30% 1. 为什么需要深度优化? 去年冬天,当我第一次在本地部署OpenClaw对接Qwen3-32B模型时,遇到了一个尴尬的问题:一个简单的"截图识别鼠标点击"任务链…...
