Spring Boot & Spring Cloud入门
🧩 一、Spring Boot 是什么?
✅ 概念:
Spring Boot 是一个基于 Spring 的快速开发框架,用于简化 Spring 应用的开发和部署。
它通过自动配置、开箱即用的依赖管理,以及内嵌服务器,大大降低了 Spring 项目的配置复杂度。
⚙️ Spring Boot 的核心特性:
| 特性 | 描述 |
|---|---|
| 自动配置 | 自动推断项目需要的配置,如数据库、MVC、AOP 等 |
| 内嵌服务器 | 内置 Tomcat/Jetty/Undertow,无需部署 war 包 |
| 零 XML 配置 | 使用注解和 Java 配置类,取代繁琐的 XML |
| 统一的依赖管理 | 基于 starter 的模块化依赖封装 |
| 生产准备 | 提供监控、健康检查、外部配置等运维支持(Spring Boot Actuator) |
📦 常见 Starter 模块
| 模块 | 说明 |
|---|---|
spring-boot-starter-web |
包含 Spring MVC 和 Tomcat |
spring-boot-starter-data-jpa |
用于数据库访问(JPA) |
spring-boot-starter-security |
添加安全支持 |
spring-boot-starter-test |
测试框架 |
spring-boot-starter-actuator |
应用监控和指标接口 |
✅ 示例:创建一个 REST 接口服务
1. pom.xml 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>2. Application.java
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}3. 控制器
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping
public String hello() {
return "Hello Spring Boot!";
}
}4. 运行:
mvn spring-boot:run浏览器访问:http://localhost:8080/hello
☁️ 二、Spring Cloud 是什么?
✅ 概念:
Spring Cloud 是一套基于 Spring Boot 的微服务开发框架集合,用于快速构建分布式系统,如服务注册、配置中心、服务调用、熔断、链路追踪等。
🌐 微服务的核心问题(Spring Cloud 解决这些):
| 问题 | Spring Cloud 组件 |
|---|---|
| 服务注册与发现 | Eureka、Consul、Nacos |
| 配置中心 | Spring Cloud Config |
| 客户端负载均衡 | Ribbon、Spring Cloud LoadBalancer |
| 服务间调用 | Feign |
| 服务容错 | Hystrix、Resilience4j |
| 网关 | Spring Cloud Gateway |
| 链路追踪 | Sleuth + Zipkin |
| 服务总线 | Spring Cloud Bus(消息驱动配置刷新) |
⚙️ Spring Boot vs Spring Cloud
| 对比项 | Spring Boot | Spring Cloud |
|---|---|---|
| 目的 | 简化单体应用开发 | 简化分布式系统开发 |
| 功能 | 快速构建 REST 服务 | 服务治理、注册、熔断、配置、调用 |
| 启动器 | spring-boot-starter-* |
spring-cloud-starter-* |
| 依赖 | 独立使用 | 构建在 Spring Boot 基础上 |
| 应用规模 | 单体项目、小型服务 | 微服务系统 |
🧱 Spring Cloud 核心组件概览
1. Eureka(服务注册中心)
服务注册与发现,类似 Dubbo 的注册中心。
eureka:
client:
register-with-eureka: true
fetch-registry: true2. Config(配置中心)
集中管理所有微服务的配置文件。
spring:
cloud:
config:
uri: http://localhost:88883. Ribbon(负载均衡)
客户端轮询、权重控制等策略。
4. Feign(声明式服务调用)
简化服务之间的 HTTP 调用,只需接口+注解即可。
@FeignClient("user-service")
public interface UserClient {
@GetMapping("/user/{id}")
User getUser(@PathVariable("id") Long id);
}5. Hystrix / Resilience4j(容错)
应对网络问题、雪崩效应,支持降级、限流、断路器等。
6. Gateway(网关)
微服务 API 的统一入口,支持过滤、路由、限流、认证。
7. Sleuth + Zipkin(链路追踪)
自动跟踪各服务间调用链,方便问题排查。
🚀 示例:构建一个简单微服务系统结构
cloud-demo/
├── discovery-server # 注册中心 Eureka
├── config-server # 配置中心
├── user-service # 用户服务
├── order-service # 订单服务
└── api-gateway # 网关服务服务之间通过 Feign 互相调用,由 Eureka 注册中心发现地址,Gateway 提供统一入口。
✅ Spring Boot + Spring Cloud 构建微服务系统优点
| 优点 | 说明 |
|---|---|
| 分布式治理组件齐全 | 服务注册、配置、监控、容错全覆盖 |
| 基于 Boot 易上手 | 用法统一,生态完善 |
| 解耦 | 每个服务职责单一 |
| 易扩展 | 横向扩展能力强 |
| 自动化 | 与 DevOps、Docker/K8s 配合良好 |
🧠 总结一句话:
Spring Boot 是构建单体应用的最佳选择,而 Spring Cloud 则是构建微服务架构的系统性解决方案。两者组合是现代 Java 云原生开发的主流技术栈。