springcloud-2service consumer
创建使用会员微服务模块-service consumer
思路分析/图解
创建Moduel(member-service-consumer-80) & 完成配置
new Module->member-service-consumer-80->finish
检查父子项目的pom是否添加相应的对应module和parent
本项目的pom.xml可以参考provider的,并删掉多余的依赖
<dependencies><!--使用版本仲裁--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--说明:starter-actuator是springboot程序的监控系统,可实现系统的健康检测可以通过http://localhost:10000/actuator看到相关的连接和信息--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--相对于provider,删除了以下依赖mybatisdruidmysqljdbctest--></dependencies>
创建本模块的application.yml
server:port: 80
spring:application:name: member-service-consumer-80
业务实现
创建entity实体类。因为这个模块是起的传递作用,实体和provider一致
Member
Result
注入RestTemplate
RestTemplate基本介绍
1、RestTemplate是Spring提供的用于访问Rest服务的模板类
2、RestTemplate提供了多种便捷访问远程Http服务的方法
3、说明:可以这样理解,通过RestTemplate,我们可以发出http请求(支持Restful)风格),去调用Controller:提供的API接口,就像我们使用浏览器发出http请求,调用该API接口一样。
4、使用简单便捷
官方文档:https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html
配置RestTemplate
@Configuration
public class CustomizationBean {@Beanpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}
创建controller
@RestController
@Slf4j
public class MemberConsumerController {@Resourceprivate RestTemplate restTemplate;private static final String MEMBER_SERVICE_PROVIDER_URL="http://localhost:10000";@PostMapping("/consumer/add")public Result<Member> addMember(Member member){//请求的完整url:MEMBER_SERVICE_PROVIDER_URL+"/member/save"//member:就是通过restTemplate发出post请求携带数据(对象)//Result.class:返回对象类型log.info("consumer-member={}",member);return restTemplate.postForObject(MEMBER_SERVICE_PROVIDER_URL + "/member/add", member, Result.class);}@GetMapping("/consumer/query/{id}")public Result<Member> queryMemberById(@PathVariable Long id){return restTemplate.getForObject(MEMBER_SERVICE_PROVIDER_URL+"/member/query/"+id,Result.class);}
}
注意踩坑1:因为消费者和生产者的传输机制原因,这儿的生产者是用对象的传输方式,所以在参数那儿需要添加@RequestBody
public Result addMember(@RequestBody Member member){
注意踩坑2:还是因为在网络中传输,需要把生产者和消费者的entity都序列化(2个)。
public class Member implements Serializable {
需要完成以上2点,否则会报错。
完成测试
测试时注意post/get请求方式。注意参数的形式。
开启仪表盘 Run DashBoard
什么是Run Dashboard
当springcloud的服务有多个时,管理多个服务的启动使用run会不好管理,这样我们就可以使用RunDashboard.
开启步骤
找到你的项目/.idea/workspace.xml文件在其中添加下面的代码即可。
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
//从这儿开始插入如下内容<component name="RunDashboard"><option name="configurationTypes"><set><option value="SpringBootApplicationConfigurationType"/></set></option><option name="ruleStates"><list><Rulestate><option name="name" value="ConfigurationTypeDashboardGroupingRule"/></Rulestate><Rulestate><option name="name" value="StatusDashboardGroupingRule"/></Rulestate></list></option></component>
重启IDEA
菜单栏选取View->ToolWindows->Services(Alt+8)
左下角操作即可。