一、SpringCloud基本知识
- SpringCloud基于HTTP协议,和Dubbo最本质的区别(dubbo的核心是基于RPC)
- 注册中心:Eureka
- 客户端负载均衡:Ribbon
- 声明式远程方法调用:Feign
- 服务降级,熔断:Hystrix
- 网关:Zuul
1. SpringBoot和SpringCloud关系
- SpringBoot是基础
-
2. SpringCloud和Dubbo对比
核心:
- Dubbo 底层基于RPC
- SpringCloud底层基于RestFul,也可以说是基于Http。
- 其他区别:
- SpringCloud相对于Dubbo功能更加全面
- SpringCloud是一个一站式的解决方案
- SpringCloud能够天然的基于Spring全家桶开发
二、SpringCloud 目标基础测试环境
1. 创建父工程
- pro01_spring_cloud_parent
- 父工程很重要,里面定义了boot 和 cloud的版本信息
- 配置依赖管理:
<dependencyManagement><dependencies><!-- 导入 SpringCloud 需要使用的依赖信息 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.SR2</version><type>pom</type><!-- import 依赖范围表示将 spring-cloud-dependencies 包中的依赖信息导入 --><scope>import</scope></dependency><!-- 导入 SpringBoot 需要使用的依赖信息 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.1.6.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
2. 创建通用工程
【此工程存放通用的组件,直接maven快速构建即可】
pro02_spring_cloud_common 【添加 parent为01工程】<parent><groupId>com.yixuexi</groupId><artifactId>pro01_spring_cloud_parent</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>pro02_spring_cloud_common</artifactId>
3. 创建提供者工程 provider
[创建普通工程继承父工程,添加spring boot ]
pro03_spring_cloud_provider<dependency><groupId>com.yixuexi</groupId><artifactId>pro02_spring_cloud_common</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
1) 修改配置文件
application.yaml
2) 创建controllerserver:port: 1000
@RestControllerpublic class ProviderController {@RequestMapping("/provider/get/employee")public Employee getEmployee(){Employee e = new Employee();e.setEmpId(1);e.setEmpName("zhangsan");e.setSex("男");return e;}}
4. 创建消费者工程
1) [创建普通工程继承父工程,添加spring boot]
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.yixuexi</groupId><artifactId>pro02_spring_cloud_common</artifactId><version>1.0-SNAPSHOT</version></dependency>
2) 创建配置类 提供RestTemplate 组件
```java /**- @date: 2021/2/25 23:39
- @author: 易学习
*/
@Configuration
public class CloudConfig {
@Bean
public RestTemplate restTemplate(){
} }return new RestTemplate();
<a name="pkeLV"></a>### 3) 创建controller类使用restTemplate 组件调用provider工程的controller```java/*** @date: 2021/2/25 23:40* @author: 易学习*/@RestControllerpublic class MyController {@Autowiredprivate RestTemplate restTemplate;@RequestMapping("/consumer/get/emp")public Employee employee(){// 1.远程调用方法的主机String host = "http://localhost:1000";// 2.远程调用方法的具体URL地址String url = "/provider/get/employee";Employee forObject = restTemplate.getForObject(host + url, Employee.class);return forObject;}}
4) application.yaml
server:port: 2000
