创建使用会员微服务模块-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,删除了以下依赖
mybatis
druid
mysql
jdbc
test-->
</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、使用简单便捷
配置RestTemplate
@Configuration
public class CustomizationBean {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
创建controller
@RestController
@Slf4j
public class MemberConsumerController {
@Resource
private 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)
左下角操作即可。