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(){
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")
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;
@FeignClient("shop-sms")
public interface SmsService {
@RequestMapping("send")
String send();
@RequestMapping("send2")
String 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 {
@Autowired
RestTemplate restTemplate;
@RequestMapping("test")
public String t(){
String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
return "用户服务调用短信服务 结果:"+s;
}
@Autowired
SmsService smsService;
@RequestMapping("test2")
public String t2(){
String 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后,控制台(短信服务)的打印信息