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

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后,控制台(短信服务)的打印信息

在这里插入图片描述

http://www.lryc.cn/news/27768.html

相关文章:

  • 【Java Pro】001-Java基础:面向对象
  • ElasticSearch从0到1——基础知识
  • 【面试系列】equals和==的区别
  • 存在重复元素模块-三道题
  • 3种方法删除7-Zip压缩包的密码
  • Codeforces Round 855 (Div. 3)(A~F)
  • 【SpringCloud】SpringCloud详解之Feign实战
  • tuts4you上lena‘s40个crackme(1)
  • 研讨会回顾 | Perforce版本控制工具Helix Core入华十年,携手龙智赋能企业大规模研发
  • C++ vscode 开发环境搭建
  • ANR系列(二)——ANR监听方案之SyncBarrier
  • 【完美解决】应用程序无法正常启动(0xc000007b)请单击“确定”关闭应用程序
  • .NET基础加强第二课--静态成员,静态类
  • 【UML+OOPC嵌入式C语言开发】使用C语言实现一个面向对象语言才能够实现的类
  • 软件测试自动化Java篇【Selenium+Junit 5】
  • Clip:学习笔记
  • STM32CubexMX与FreeRTOS学习
  • Master Slave 主从同步错误 Slave_IO_Running:NO/Slave_SQL_Running: No
  • JavaScript函数之prototype原型和原型链
  • 从上海分时电价机制调整看转供电用户电能计费
  • TypeScript类型体操:获取数组中元素对象属性的值作为新类型
  • npm,yarn和pnpm
  • 【算法】【数组与矩阵模块】在排好序的矩阵中找数,时间复杂度O(M+N)
  • 【Java|基础篇】计算机中数据的存储规则
  • RestTemplate使用HttpClient连接池
  • Python 操作Redis
  • CEC2020:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2020(提供MATLAB代码
  • 词对齐 - MGIZA++
  • GUI 之 Tkinter编程
  • 【软件测试】性能测试面试题都问什么?面试官想要什么?回答惊险避坑......