Spring Boot & Spring Cloud入门

约 8 分钟读完

🧩 一、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
客户端负载均衡 RibbonSpring Cloud LoadBalancer
服务间调用 Feign
服务容错 HystrixResilience4j
网关 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: true

2. Config(配置中心)

集中管理所有微服务的配置文件。

spring:
  cloud:
    config:
      uri: http://localhost:8888

3. 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 云原生开发的主流技术栈。


← Java安全编程基础(一) Spring&SpringMVC基础学习 →