Spring Cloud从零开始:微服务入门指南
大家好,我是小林,一名211高校的计算机专业研究生,平时喜欢写技术博客帮助刚入门的同学。最近很多学弟学妹问我:“Spring Cloud到底是什么?为什么现在企业都在用微服务?”其实我当初学的时候也是一头雾水——一堆名词、配置文件、服务注册、熔断……简直让人抓狂!
今天这篇教程,我就带完全零基础的你,从零搭建一个最简单的 Spring Cloud 微服务项目。全程只用最通俗的语言 + 最简代码,目标是让你在 30 分钟内跑通第一个“产品服务”。别担心,跟着做就行!
一、Spring Cloud 是什么?能用来做什么?
简单说:
- Spring Boot:帮你快速搭建单个 Java 应用(比如一个商品管理系统)。
- Spring Cloud:帮你把多个 Spring Boot 应用“连起来”,组成一个分布式系统,也就是常说的“微服务架构”。
📌 举个例子:
假设你要做一个电商“产品”系统。传统做法是写一个大应用,包含商品管理、订单、支付、用户等所有功能。
而微服务的做法是:拆成多个小服务——product-service(产品服务)、order-service(订单服务)、user-service(用户服务)……每个服务独立开发、部署、运行,通过网络互相调用。
Spring Cloud 就是提供了一套工具,让这些服务能自动发现彼此、安全通信、容错处理,而不用你手动写一堆网络代码。
二、环境准备(5分钟搞定)
你需要安装以下工具:
| 工具 | 版本建议 | 作用 |
|---|---|---|
| JDK | 17 或 8 | Java 运行环境 |
| Maven | 3.6+ | 项目依赖管理 |
| IntelliJ IDEA | 社区版即可 | 开发 IDE |
| Spring Boot | 3.x(推荐 3.2+) | 快速构建应用 |
💡 我当初学的时候用的是 JDK 8,但现在新项目基本都上 JDK 17 了,兼容性更好。
创建项目骨架
我们用 Spring Initializr 快速生成项目:
- 打开网站,选择:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.x
- Group:
com.example - Artifact:
product-service
- 在 Dependencies 中添加:
Spring WebSpring Boot DevTools(热更新)
- 点击 Generate 下载 ZIP,解压后用 IDEA 打开。
✅ 此时你已经有了一个能跑的 Spring Boot 应用!
三、核心概念(用大白话解释)
1. 什么是“微服务”?
就是把一个大系统拆成多个小服务,每个服务只干一件事。比如我们的 product-service 只负责“产品”相关功能。
2. 服务怎么互相找到对方?
靠 服务注册中心(比如 Eureka、Nacos)。你可以把它想象成“电话簿”——每个服务启动时把自己名字和地址登记上去,其他服务想调用它,就去“查电话簿”。
3. 服务之间怎么通信?
通常用 HTTP + JSON。比如订单服务想查某个产品的价格,就发一个 HTTP 请求到产品服务的 /api/products/{id} 接口。
四、实战:搭建你的第一个“产品服务”
我们现在要实现一个最简单的功能:通过 ID 查询产品信息。
第一步:写一个产品实体类
// src/main/java/com/example/productservice/Product.java
package com.example.productservice;
public class Product {
private Long id;
private String name;
private Double price;
// 构造函数、getter/setter 省略(IDEA 可自动生成)
public Product(Long id, String name, Double price) {
this.id = id;
this.name = name;
this.price = price;
}
// getter 和 setter...
}
第二步:写一个 Controller 提供接口
// src/main/java/com/example/productservice/ProductController.java
package com.example.productservice;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/products")
public class ProductController {
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
// 模拟数据库查询(实际项目用 MyBatis 或 JPA)
if (id == 1L) {
return new Product(1L, "iPhone 15", 5999.0);
}
return null;
}
}
第三步:启动应用
运行 ProductServiceApplication.java 的 main 方法。
打开浏览器访问:
👉 http://localhost:8080/api/products/1
你应该看到:
{"id":1,"name":"iPhone 15","price":5999.0}
✅ 恭喜!你的第一个“产品服务”跑起来了!
五、加入 Spring Cloud(让服务可被发现)
现在这个服务是“孤岛”,别人找不到它。我们要引入 服务注册中心。
使用 Nacos(比 Eureka 更现代,国内主流)
1. 启动 Nacos 服务器
- 下载 Nacos:https://github.com/alibaba/nacos/releases
- 解压后进入
bin目录,执行:# Linux/Mac sh startup.sh -m standalone # Windows startup.cmd -m standalone - 访问
http://localhost:8848/nacos(账号密码都是nacos)
2. 修改 product-service 项目
pom.xml 添加依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2022.0.0.0</version>
</dependency>
application.yml 配置:
server:
port: 8081 # 改个端口避免冲突
spring:
application:
name: product-service # 服务名(其他服务通过这个名字找你)
cloud:
nacos:
discovery:
server-addr: localhost:8848 # Nacos 地址
3. 在主类上加注解
// ProductServiceApplication.java
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient // ⭐ 关键!开启服务注册
public class ProductServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProductServiceApplication.class, args);
}
}
4. 重启服务
刷新 Nacos 控制台(http://localhost:8848/nacos),你会在“服务列表”看到 product-service!
🎯 现在其他服务只要知道名字
product-service,就能通过 Nacos 找到它并调用接口!
六、新手常见问题解答
Q1:为什么我的服务没注册到 Nacos?
- 检查
application.yml中server-addr是否正确 - 确保 Nacos 服务器已启动(默认端口 8848)
- 查看控制台是否有报错(比如版本不兼容)
Q2:Spring Boot 和 Spring Cloud 版本怎么匹配?
官方有版本对应表。简单记住:
- Spring Boot 3.x → Spring Cloud 2022.x
- 别混用旧版(比如 Boot 2.x + Cloud 2022.x 会出错)
Q3:一定要用 Nacos 吗?能用 Eureka 吗?
可以!但 Nacos 功能更全(支持配置中心),且阿里开源,国内生态更好。Eureka 已停止维护。
七、下一步学习建议
你已经迈出了微服务的第一步!接下来可以:
- 再建一个
order-service,让它通过RestTemplate调用product-service(试试@LoadBalanced注解) - 学习 OpenFeign —— 让服务调用像调本地方法一样简单
- 加入 Sentinel 实现熔断限流(防止一个服务挂掉拖垮整个系统)
- 用 Spring Cloud Gateway 做统一 API 网关
💬 我当初学的时候,也是从一个小小的“产品服务”开始,慢慢拼出整个电商系统。不要怕复杂,微服务的本质就是“拆”+“连”。每一步搞懂,你就离架构师更近一步!
结语
这篇教程没有讲高深理论,只聚焦一件事:让你亲手跑起第一个 Spring Cloud 微服务。希望你能感受到“原来微服务也没那么可怕”。
如果你觉得有帮助,欢迎关注我的博客,我会持续更新《Spring Cloud 实战系列》。下期我们讲:如何用 Feign 让服务调用像本地方法一样简单!
有任何问题,评论区见!我们一起成长 💪

评论 0