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