1. SpringCloud的相关
1.1. 什么是springCloud
SpringCloud是 Privotal(开发spring的团队)在2015年发布的一个项目 ,它提供了一些可以让开发者快速构建微服务项目的工具,比如配置管理,服务发现,熔断,路由等等,可以在任何分布式环境下很好的工作。 但是注意:springCLoud 并不是一个全新研发的框架,它只是把一些优秀的解决微服务架构中的优秀开源框架基于SpringCloud的规范进行了整合,采用SpringBoot这个框架再次封装屏蔽掉了复杂的配置 让开发者快递上手,不需要关注底层复杂的配置 只需要简单的配置就能开发微服务项目,所以SpringCloud是一套微服务架构的规范, 而它的实现有很多比如:springCloud netflix,SpringCloud Consoul SpringCloud Alibaba
1.2. springCloud的版本说明
SpringCloud的版本,并不是像其他的Spring框架那样 x.x.x的命名格式 而是采用了伦敦地铁站的名字根据字母表的顺序结合
1.3. Boot和Cloud对照关系
2. 环境搭建
2.1. 创建父工程
2.2. 添加坐标
<!--Springboot的版本管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--SpringCloud的版本管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.3. 创建实体工程
2.4. 添加依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
2.5. 新建实体类
2.6. 新建Provider工程
2.7. 添加依赖
<!--依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.cloud.cn</groupId>
<artifactId>cloud-entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2.8. 编写主配置类
2.9. 编写controller
2.10. 启动测试
2.11. 新建consumer工程
2.12. 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.cloud.cn</groupId>
<artifactId>cloud-entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2.13. 编写主配置类
2.14. 编写Controller
2.15. 编写配置文件
2.16. 问题描述
cloud-consumer和cloud-provider分别是不同的工程,我们工程之间如何调用呢??
3. RestTemplate的使用
3.1. 注入到容器
3.2. 使用远程调用
3.3. 启动测试
3.4. 问题说明
我们采用restTemplate远程调用的方式,实现了跨项目的调用,但是这个调用存在一定的问题 问题一: RestTemplate官方文档说明 已经不更新 不支持异步 问题二: RestTemplate远程调用时 URL地址写死了 如果provider的域名端口修改任意一处此时我们要修改源代码,并且如果provider是一个集群的情况下 这样写不优雅