Spring Cloud 从零开始:微服务入门指南
开篇:什么是 Spring Cloud?它能做什么?

在现代软件开发中,微服务架构(Microservices Architecture) 是一种非常流行的开发模式。简单来说,它就是把一个大系统拆分成多个小的、独立运行的服务模块,每个模块负责不同的功能。
比如,一个电商网站可以被拆分为商品服务、用户服务、订单服务等多个部分。它们各自独立运行,但又可以通过网络进行通信协作。这种设计方式让整个系统更加灵活、易于维护和扩展。
而 Spring Cloud,就是一套用来构建和管理这些“微服务”的工具集合。它是基于 Spring Boot 的,也就是说,你不需要重新学习新的语法,而是使用你已经熟悉的 Spring 来写程序,只不过现在你可以轻松地写出多个服务,并协调它们的工作。
环境准备:搭建你的第一个 Spring Cloud 开发环境

所需工具清单:
- Java JDK 1.8 或以上(推荐 17)
- Maven 或 Gradle(本文使用 Maven)
- IDE:IntelliJ IDEA(社区版即可)、Eclipse 或 VS Code 都可以
- Spring Initializr(用于快速生成项目结构)
步骤 1:安装 Java 和配置环境变量
下载 Java SE Development Kit(JDK)并安装:
安装完成后,在命令行输入以下命令查看是否安装成功:
java -version
javac -version
确保输出类似如下内容:
java version "17.0.3" 2022-04-19 LTS
Java(TM) SE Runtime Environment (build 17.0.3+7-LTS-40)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.3+7-LTS-40, mixed mode, sharing)
步骤 2:安装 IntelliJ IDEA
前往官网 https://www.jetbrains.com/idea/download/ 下载并安装 IntelliJ IDEA Community 版本。
步骤 3:创建 Spring Boot 项目
打开浏览器,进入 https://start.spring.io/,这是一个官方提供的项目生成器。
填写如下信息:
| 项 | 填写内容 |
|---|---|
| Project | Maven |
| Language | Java |
| Spring Boot Version | 例如 3.1.x |
| Group | com.example |
| Artifact | microservice-demo |
| Name | 微服务练习项目 |
| Dependencies | Spring Web、Spring Cloud Starter Config、Spring Cloud Starter Netflix Eureka Client |
点击“Generate”按钮下载项目压缩包,解压后用 IntelliJ IDEA 打开该项目。
核心概念:理解 Spring Cloud 的几个关键词
对于初学者来说,以下几个核心概念是必须了解的。
1. 服务注册与发现(Service Registration & Discovery)
想象一下你有一群朋友在不同的地方工作,你想要联系他们时,得知道每个人的电话号码或位置。而在微服务世界里,“服务中心(Eureka Server)”就像是通讯录一样,所有服务启动后都会告诉 Eureka 自己的位置,其他服务要找它的时候就去问 Eureka。
2. 配置中心(Config Server)
很多服务可能共享同样的配置文件,比如数据库连接密码、日志级别等。Config Server 可以集中管理这些配置,并动态推送给各服务。
3. 负载均衡(Load Balancing)
当一个服务有多份实例运行时,如何决定将请求交给哪一个?Ribbon 或 LoadBalancer 工具就可以帮你实现这个分配逻辑。
4. 网关(API Gateway)
所有用户的请求都通过一个统一入口进来。Zuul 或 Gateway 可以作为访问入口,做身份验证、限流等功能。
接下来我们就先从最基础的“服务注册中心”讲起。
实战项目:从零开始搭建一个简单的微服务项目

目标:我们来做一个“图书管理系统”,包括两个微服务:
book-service:提供图书列表数据user-service:模拟用户登录操作- 使用
Eureka Server作为注册中心,统一注册和发现这两个服务
第一步:创建 Eureka 注册中心(注册中心服务)
创建一个新的 Spring Boot 项目(eureka-server)
再次访问 https://start.spring.io/,填入如下参数:
| 项 | 内容 |
|---|---|
| Project | Maven |
| Language | Java |
| Spring Boot Version | 同上(如 3.1.x) |
| Group | com.example |
| Artifact | eureka-server |
| Dependencies | Spring Web、Spring Cloud Starter Netflix Eureka Server |
修改 application.yml 文件:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

主类添加注解开启 Eureka 功能:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
启动后打开浏览器访问:http://localhost:8761 就能看到 Eureka 控制台界面了。
第二步:创建第一个微服务 —— 图书服务(book-service)
新建一个 Spring Boot 项目,还是去 start.spring.io 创建:
- ArtifactId:book-service
- Dependencies:Spring Web + Spring Cloud Starter Netflix Eureka Client
application.yml:
spring:
application:
name: book-service
server:
port: 8081
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
启动类加入注解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class BookServiceApplication {
public static void main(String[] args) {
SpringApplication.run(BookServiceApplication.class, args);
}
}
编写一个简单的 API 接口:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getBooks() {
return "[Book1, Book2, Book3]";
}
}
启动后回到 Eureka 页面,可以看到注册成功的记录!
第三步:创建第二个微服务 —— 用户服务(user-service)
同样创建一个新的 Spring Boot 项目:
- artifact:user-service
- dependencies:Spring Web + Eureka Client
application.yml:
spring:
application:
name: user-service
server:
port: 8082
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
主类加注解启用服务发现:
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
编写一个简单的 API 示例:
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/login")
public String login() {
return "Login success for User!";
}
}
启动后刷新 Eureka 页面,应该也能看到 user-service 成功注册进去。
进阶小尝试:让 User 服务调用 Book 服务
我们需要使用 RestTemplate + 负载均衡来进行服务间的通信。
修改 UserServiceApplication 加入 RestTemplate Bean:
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
新建一个 Controller 来调用 Book 服务:
@RestController
@RequestMapping("/api")
public class ApiService {
private final RestTemplate restTemplate;
public ApiService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@GetMapping("/books")
public String callBookService() {
String url = "http://book-service/books";
return restTemplate.getForObject(url, String.class);
}
}
然后访问 http://localhost:8082/api/books,就能看到图书服务返回的结果啦!
常见问题解答
Q1:服务注册不上怎么办?
- 检查 Eureka 服务是否正常运行。
- 检查服务的 application.yml 中是否有拼写错误。
- 查看控制台日志是否有异常提示。
Q2:RestTemplate 报错“No instances available for service”。
- 表示没有可用的微服务实例。
- 检查服务是否真的在运行、端口有没有冲突。
- 等待几秒再试一次,有时候注册需要点时间同步。
Q3:IDE 中找不到 “@EnableDiscoveryClient” 这样的注解?
- 检查依赖中是否引入了
spring-cloud-starter-netflix-eureka-client。 - Maven 中查看 pom.xml 是否有相关依赖。
学习建议:下一步学什么?
恭喜你完成了第一个 Spring Cloud 微服务项目!以下是继续深入学习的方向建议:
🔹 深入微服务组件学习:
- Hystrix(熔断器):当某个服务挂掉时自动切换备用方案,提高系统稳定性。
- Gateway / Zuul(网关):为所有的微服务提供统一访问入口,集成权限认证。
- Spring Cloud Config(配置中心):让所有服务读取远程配置,便于统一管理和更新。
- Spring Cloud Sleuth(链路追踪):跟踪请求在多个服务之间的流转路径。
🔹 实践拓展建议:
- 尝试给项目加上数据库层(如 MySQL)。
- 给每个服务加上 Swagger 文档接口说明。
- 部署到服务器或者 Docker 容器中。
🔹 推荐学习资料:
- 《Spring Cloud 微服务实战》——适合初学者的经典书籍
- B站搜索“Spring Cloud 入门教程”
- Spring Cloud 官网文档(https://spring.io/projects/spring-cloud)
总结
Spring Cloud 是现代分布式系统的“利器”,虽然刚接触会有些复杂,但只要从最小的例子入手,边学边练,很快你就能掌握它的基本使用方法。
本文带你一步步搭建了一个简单的微服务系统,包含服务注册、调用等基本功能。接下来的学习重点,就是不断扩展你的知识边界,逐步掌握更多高级特性。
记住一句话:代码是最好的老师。动手实践,不要怕出错。祝你在学习 Spring Cloud 的路上越走越顺!🚀

评论 0