营销网站类型,zencart 网站老是跳转到原地址,芜湖营销型网站制作,做阀门网站电话#x1f600;前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【三】#xff0c;希望你能够喜欢 #x1f3e0;个人主页#xff1a;晨犀主页 #x1f9d1;个人简介#xff1a;大家好#xff0c;我是晨犀#xff0c;希望我的文章可以帮助到大家#xff0c;… 前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【三】希望你能够喜欢 个人主页晨犀主页 个人简介大家好我是晨犀希望我的文章可以帮助到大家您的满意是我的动力
欢迎大家这里是CSDN我总结知识的地方欢迎来到我的博客感谢大家的观看 如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦 文章目录 微服务基础环境搭建创建使用会员微服务模块-service consumer需求说明/图解思路分析/图解实现步骤创建Moduel 完成配置创建member-service-consumer-80 微服务模块[使用会员服务]修改member-service-consumer-80 的pom.xml , 加入相关依赖创建resources/application.yml创建主启动类com/my/springcloud/MemberConsumerApplication.java 业务实现创建entity注入RestTemplate基本介绍 Controller 完成测试首先启动微服务模块: member-service-provider-10000 和member-service-consumer-80 注意事项和使用细节如果member-service-consumer-80 启动报错:添加会员数据库中为null 的解决方案开启Run DashBoard什么是Run Dashboard如图开启Run Daahboard/Service 的步骤 微服务基础环境搭建
创建使用会员微服务模块-service consumer
需求说明/图解
示意图 -浏览器: http://localhost/member/consumer/get/1 测试添加会员: http://localhost/member/consumer/save 思路分析/图解
1、创建Moduel(member-service-consumer-80) 完成配置 2、创建controller 3、完成测试
实现步骤
创建Moduel 完成配置
创建member-service-consumer-80 微服务模块[使用会员服务]
由于创建模块步骤一致这里不做描述。
创建模块完成后父工程的pom.xml-会做相应变化管理member-service-consumer-80 微服务子模块 修改member-service-consumer-80 的pom.xml , 加入相关依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIde-commerce-center/artifactIdgroupIdcom.my.springcloud/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdmember-service-consumer-80/artifactId!--引入相关的依赖: 我们引入了当前需要的依赖后面如果有其它需要再灵活调整--dependencies!--引入sleuth zipkin 依赖 说明 1. 使用的是版本仲裁 2.starter-zipkin包含了sleuth --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-zipkin/artifactId/dependency!--引入eureka client 场景启动器starter--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependency!--引入web-starter 说明我们使用版本仲裁(从父项目继承了版本)--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--说明:starter-actuator 是springboot程序的监控系统, 可以实现系统的健康检测可以通过http://localhost:10000/actuator 看到相关的连接,和信息--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency!--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!--引入e_commerce_center-common-api--dependencygroupIdcom.my.springcloud/groupIdartifactIde_commerce_center-common-api/artifactIdversion${project.version}/version/dependency/dependencies/project创建resources/application.yml
server:port: 80创建主启动类com/my/springcloud/MemberConsumerApplication.java
SpringBootApplication
public class MemberConsumerApplication {public static void main(String[] args) {SpringApplication.run(MemberConsumerApplication.class,args);}
}业务实现
创建entity
AllArgsConstructor
NoArgsConstructor
Data
//Serializable 加上后面可能使用
public class Member implements Serializable {private Long id;private String name;private String pwd;private String mobile;private String email;private Integer gender;
}创建com/my/springcloud/entity/Result.java
/**
* 1. 用于返回结果 利于json 格式
* 2. 这个工具类 在网上也可找到
*/
public class ResultT {private String code;private String msg;private T data;public String getCode() {return code;}public void setCode(String code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public T getData() {return data;}public void setData(T data) {this.data data;}public Result() {}public Result(T data) {this.data data;}public static Result success() {Result result new Result();result.setCode(200);result.setMsg(success);return result;}public static T ResultT success(T data) {ResultT result new Result(data);result.setCode(200);result.setMsg(success);return result;}public static T ResultT success(String msg, T data) {ResultT result new Result(data);result.setCode(200);result.setMsg(msg);return result;}public static Result error(String code, String msg) {Result result new Result();result.setCode(code);result.setMsg(msg);return result;}public static T ResultT error(String code, String msg, T data) {ResultT result new Result(data);result.setCode(code);result.setMsg(msg);return result;}
}注入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 创建配置类: com/my/springcloud/config/CustomizationBean.java
Configuration
public class CustomizationBean {//说明: 配置注入RestTemplate bean/对象//这里的LoadBalanced 就是赋予 RestTemplate 负载均衡的能力//默认是使用轮询算法来访问远程调用接口/地址BeanLoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}Controller
创建:com/my/springcloud/controller/MemberConsumerController.java
RestController
Slf4j
public class MemberConsumerController {//定义member_service_provider_url 这是一个基础url地址//使用shiftctrlu 进行字母大小写的切换/*** 说明:* 1. MEMBER-SERVICE-PROVIDER 就是服务提供方[集群], 注册到Eureka Server 的名称* 2. 也就是服务提供方[集群]对外暴露的名称为 MEMBER-SERVICE-PROVIDER* 3. MEMBER-SERVICE-PROVIDER 目前有 两个 Availability Zones member-service-provider:10000* 还有一个 member-service-provider:10002* 需要增加一个注解LoadBalanced 赋予 RestTemplate 负载均衡的能力,也就是会根据你的负载均衡算法* 来选择某个服务去访问, 默认是轮询算法, 当然我们也可以自己配置负载均衡算法*/public static final String MEMBER_SERVICE_PROVIDER_URL http://MEMBER-SERVICE-PROVIDER; //后面这里地方会修改成提供服务模块的注册别名//装配RestTemplate bean/对象Resourceprivate RestTemplate restTemplate;//方法/接口 添加member对象到数据库/表//说明: 这还有一个坑, 一会就解决.PostMapping(/member/consumer/save)public ResultMember save(Member member) {log.info(service-consumer member{}, member);//说明//请的完整的url :MEMBER_SERVICE_PROVIDER_URL /member/save http://localhost:10000/member/save//member : 就是通过restTemplate 发出的post请求携带数据(对象)//Result.class: 返回对象类型//这里通过restTemplate 调用服务提供模块的接口, 就是一个远程调用 RPCreturn restTemplate.postForObject(MEMBER_SERVICE_PROVIDER_URL /member/save, member, Result.class);}//方法/接口 , 根据id 调用服务接口,返回member对象信息GetMapping(/member/consumer/get/{id})public ResultMember getMemberById(PathVariable(id) Long id) {return restTemplate.getForObject(MEMBER_SERVICE_PROVIDER_URL /member/get/ id, Result.class);}}
完成测试
首先启动微服务模块: member-service-provider-10000 和member-service-consumer-80
浏览器: http://localhost/member/consumer/get/1 注意事项和使用细节
如果member-service-consumer-80 启动报错:
springBoot 启动If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
//加入排除DataSourceAutoConfiguration 自动配置
SpringBootApplication(exclude DataSourceAutoConfiguration.class)
public class MemberConsumerApplication {public static void main(String[] args) {SpringApplication.run(MemberConsumerApplication.class, args);}
}添加会员数据库中为null 的解决方案
通过网络发送相当于流的形式底层会重新变成对象以json形式传播不做处理就会添加空。需要通过序列化发送才能反序列化恢复 开启Run DashBoard
什么是Run Dashboard
当springcloud 的服务有多个时管理多个服务的启动使用run 会不好管理这样我们就可以使用Run Dashboard。
如图 新版的2020 的IDEA 当你同时启动两个微服务时不会弹出启动Run Dashboard 窗口的提示是因为IDEA2020 将Run Dashboard 添加到控制台Service 中
开启Run Daahboard/Service 的步骤
找到你的项目/.idea/workspace.xml 文件在其中添加下面的代码即可 重新启动idea2020.2 , 会看到如下界面, 如果没有看到这个Services, 参考第3 步添加一下即可 如果没有看到这个Services, 添加一下即可 启动你的微服务就会在Service 面板上看到各个微服务模块, 也可以进行管理 提醒 不同版本的IDEA 开启Run DashBoard 有区别如果和这里IDEA 版本不同百度下解决。 文章到这里就结束了如果有什么疑问的地方请指出诸大佬们一起来评论区一起讨论 希望能和诸大佬们一起努力今后我们一起观看感谢您的阅读 如果帮助到您不妨3连支持一下创造不易您们的支持是我的动力