1、什么是SpringCloud
Spring Cloud 是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务系统的构建。
Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud 本身并不是一个拿来即可用的框架,它是一套微服务规范,共有两代实现。
- Spring Cloud Netflix 是 Spring Cloud 的第一代实现,主要由
Eureka
、Ribbon
、Feign
、Hystrix
等组件组成。 - Spring Cloud Alibaba 是 Spring Cloud 的第二代实现,主要由
Nacos
、Sentinel
、Seata
等组件组成。
2、RestTemplate初体验
2.1、创建一个父工程(统一管理依赖版本)
父工程依赖:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <modules> <module>order</module> <module>stock</module> </modules> <packaging>pom</packaging> <groupId>com.lili</groupId> <artifactId>springcloud-alibaba</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springcloud-alibaba</name> <description>springcloud-alibaba</description> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.2、两个字工程
- order
- stock
两个子工程工程都加入以下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
order工程端口号:
server: port: 8001
stock工程端口号:
server: port: 8002
stock工程controller内容
@RestController @RequestMapping("/stock") public class StockController { @RequestMapping("/stockList") public String getStock(){ System.out.println("库存"); return "stock"; } }
order工程操作
1、将restTemplate
对象加入组件,可直接在启动类上加入以下代码
@Bean public RestTemplate getRestTemplate(RestTemplateBuilder builder){ return builder.build(); }
2、编写controller层,并进行调用
@RestController @RequestMapping("/order") public class OrderController { @Autowired RestTemplate restTemplate; @GetMapping("/orderList") public String getOrder() { System.out.println("订单"); String message = restTemplate.getForObject("http://localhost:8002/stock/stockList", String.class); return "order" + message; } }
3、浏览器运行结果
orderstock