初识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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!