初识SpringCloud以及使用RestTemplate进行服务调用 ---> 服务调用初体验
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

浙公网安备 33010602011771号