第1章:快速入门SpringBoot

文章目录

第1章 快速入门SpringBoot

SpringBoot和SpringCloud微服务关系

SpringBoot 核心定位

  • SpringBoot4.0 是 Spring 生态下的 快速开发脚手架
  • 核心目标是 "约定优于配置",通过自动配置、嵌入式服务器、starter 依赖等特性;
  • 消除传统 Spring 开发中繁琐的 XML 配·置和依赖管理工作;
  • 它专注于 快速构建独立的、可运行的 Spring 应用
  • 是微服务架构中 "单个服务节点" 开发的基础工具。

SpringCloud 核心定位

  • SpringCloud 是基于 SpringBoot 构建的 微服务治理框架
  • 专注于解决分布式系统:服务注册发现、负载均衡、熔断降级、配置中心、网关路由等核心问题;
  • 它并非单一框架,而是一系列微服务组件的集合,提供了微服务架构的 "全套解决方案"。

基础与上层的依赖关系

  • SpringBoot4.0 是 SpringCloud 的 基础底座
    • 所有 SpringCloud 组件(如 Eureka、Gateway、Nacos 等)均基于 SpringBoot 开发;
    • 依赖 SpringBoot 的自动配置、依赖注入等核心能力。
  • SpringCloud 是 SpringBoot 的 分布式扩展
    • SpringBoot 解决 "单个服务如何快速开发";
    • SpringCloud 解决 "多个 SpringBoot 服务如何协同工作形成分布式系统"

功能边界划分

维度 SpringBoot4.0 作用 SpringCloud 作用
开发目标 快速构建独立可运行的单体 / 服务节点 实现多服务分布式协同与治理
核心能力 自动配置、嵌入式服务器、starter 依赖、简化开发 服务注册发现、负载均衡、熔断、网关、配置中心
应用场景 单体应用开发、微服务单个节点开发 分布式微服务集群搭建与管理
依赖关系 可独立使用,无需依赖 SpringCloud 必须基于 SpringBoot 开发(如 SpringBoot4.0)

协同工作流程

  • 基于 SpringBoot4.0 开发单个微服务节点(如用户服务、订单服务),每个服务独立打包运行。
  • 通过 SpringCloud 组件为这些服务添加治理能力,如用 Nacos 实现服务注册发现,用 Gateway 实现网关路由
  • 各 SpringBoot 服务通过 SpringCloud 组件实现:,跨服务调用、负载均衡、故障隔离等分布式特性,形成完整微服务集群。

SSM框架介绍

  • Spring 框架

    • 核心定位
      • 企业级 Java 开发一站式框架
      • 专注于 "解耦组件、简化开发"
      • 是整个 SSM 生态的核心基础。
    • 核心价值
      • 通过 IOC(控制反转)实现对象生命周期与依赖的统一管理
      • 通过 AOP(面向切面编程)实现日志、事务等横切逻辑与业务逻辑分离
      • 兼容 JDK21 新特性(虚拟线程、密封类等)
      • 性能与稳定性较旧版本提升 30%+。
  • SpringBoot 框架

    • 核心定位
      • Spring 生态的 "快速开发脚手架",
      • 基于 "约定优于配置" 理念,
      • 简化 Spring7 与第三方框架(如 MyBatis4.0)的整合流程。
    • 核心价值
      • 消除繁琐 XML 配置,
      • 提供 Starter 依赖机制(一键引入所需组件)
      • 嵌入式服务器(Tomcat10.1 内置)
      • 支持一键打包部署
      • 大幅降低 SSM 项目初始化与开发成本。
  • MyBatis 框架

    • 核心定位
      • 轻量级 ORM(对象关系映射)框架
      • 专注于 Java 对象与数据库表的映射
      • 简化原生 JDBC 开发流程。
    • 核心价值
      • 通过 XML / 注解实现 SQL 与 Java 代码

SpringBoot工程创建

SpringBoot第一个接口

com.guslegend.model.User

java 复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private int id;
    private String name;
    private Integer age;

}

com.guslegend.controller.UserController

java 复制代码
@RestController
@RequestMapping("/user")
public class UserController {

    private  static final List<User> users = new ArrayList<User>();

    static {
        users.add(new User(1,"张三",18));
        users.add(new User(2,"李四",19));
        users.add(new User(3,"王五",20));
    }

    @RequestMapping("/list")
    public List<User> getUserList() {
        return users;
    }
  }

@RestController是@Controller和@ResponseBody的复合注解:标识这是一个REST接口控制器,自动将返回值转为JSON

@RequestMapping:接口基础路径,所有接口URL以 /user 开头

SpringBoot常见注解

常用注解:

注解分类 注解名称 核心作用 适用场景
核心启动类注解 @SpringBootApplication 整合 @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan,项目启动核心注解 主启动类唯一标注
控制器注解 @Controller 标识控制器类,用于接收 HTTP 请求(需配合 @ResponseBody 返回 JSON) 传统 MVC 或混合开发(返回页面 / 数据)
请求映射注解 @RequestMapping 定义接口 URL 路径与支持的 HTTP 方法,可标注在类 / 方法上 通用接口路径配置
参数绑定注解 @RequestBody 接收请求体中的 JSON 数据,自动绑定到 Java 对象 POST/PUT 请求传递复杂参数
控制器注解 @RestController 整合 @Controller + @ResponseBody,标识 REST 接口控制器,自动返回 JSON 数据 前后端分离接口开发
请求映射注解 @GetMapping @RequestMapping 的 GET 方法简化版,专门处理查询类请求 查询资源(列表 / 详情)
请求映射注解 @PostMapping @RequestMapping 的 POST 方法简化版,专门处理创建类请求 新增资源(如用户注册)
请求映射注解 @PutMapping @RequestMapping 的 PUT 方法简化版,专门处理全量更新类请求 全量更新资源(如修改用户所有信息)
请求映射注解 @DeleteMapping @RequestMapping 的 DELETE 方法简化版,专门处理删除类请求 删除资源(如删除用户)
参数绑定注解 @RequestParam 从 URL 查询参数中获取值(如?name = 张三 & age=20) URL 查询参数传递场景
参数绑定注解 @PathVariable 从 URL 路径中获取参数(如 /api/user/{id} 中的 id) 路径参数传递场景
参数绑定注解 @RequestHeader 获取 HTTP 请求头中的信息(如 Authorization、User-Agent) 需要请求头信息的场景
参数绑定注解 @CookieValue 获取请求中的 Cookie 值(如 SESSIONID) 需要 Cookie 信息的场景
配置组件注解 @Configuration 标识当前类为配置类,替代传统 XML 配置文件 自定义 Bean 或配置逻辑
配置组件注解 @Bean 在配置类中定义 Spring Bean,等价于 XML 中的标签 自定义组件(如线程池、工具类)
配置组件注解 @Value 注入配置文件中的单个属性值,支持默认值和 SpEL 表达式 单个简单配置项注入
配置组件注解 @ConfigurationProperties 批量绑定配置文件属性到 Java 实体类,支持层级配置 复杂配置项(如多属性组合)
组件标识注解 @Component 通用组件注解,标识类为 Spring 管理的 Bean 无明确分层的通用组件
组件标识注解 @Service 标注服务层类,标识业务逻辑组件 服务层(业务逻辑处理)
组件标识注解 @Repository 标注数据访问层类,标识数据操作组件(配合 MyBatis 的 @Mapper 使用) 数据访问层(如 Mapper 接口)
依赖注入注解 @Autowired 自动注入 Spring 容器中的 Bean,默认按类型匹配 Bean 依赖注入(Spring 原生)
依赖注入注解 @Qualifier 配合 @Autowired 使用,按 Bean 名称注入(解决同类型多 Bean 冲突) 同类型多 Bean 的精准注入
依赖注入注解 @Resource 按名称(默认)或类型注入 Bean,遵循 JSR-250 规范 跨框架兼容的 Bean 注入
事务管理注解 @Transactional 标识方法或类开启事务管理,支持事务传播属性、隔离级别等配置 数据操作类(如新增 / 修改 / 删除)
异步任务注解 @EnableAsync 开启异步任务支持,需配合 @Async 使用 主启动类或配置类
异步任务注解 @Async 标识方法为异步任务,由 Spring 异步线程池执行 耗时操作(如日志记录、邮件发送)
定时任务注解 @EnableScheduling 开启定时任务支持,需配合 @Scheduled 使用 主启动类或配置类
定时任务注解 @Scheduled 标识定时任务方法,支持 cron 表达式、固定延迟、固定速率等配置 周期性任务(如定时统计、数据同步)

@SpringBootApplication

  • 作用:SpringBoot 项目的核心注解,用于标识主启动类,
  • 是三个注解的组合
    • @SpringBootConfiguration
    • @EnableAutoConfiguration
    • @ComponentScan 。

@SpringBootConfiguration:

  • 标识当前类为配置类(替代传统 XML 配置文件)
  • 允许通过 @Bean 定义组件。

@EnableAutoConfiguration

  • 开启自动配置(SpringBoot 核心特性),
  • 根据 classpath 中的依赖自动初始化 Bean
    • 如引入 spring-boot-starter-web
    • 自动配置 Tomcat 和 SpringMVC

@ComponentScan

  • 自动扫描当前类所在包及其子包中的 @Component 注解(包括 @Controller@Service 等),
  • 将其注册为 Spring 容器中的 Bean。

控制器与请求映射注解

@RestController

  • 标识当前类为 REST 接口控制器 ,是 @Controller + @ResponseBody 的组合。

  • 替代传统 @Controller 需在方法上额外加 @ResponseBody 的繁琐操作,

  • 直接将方法返回值转为 JSON 格式(无需视图解析器)。

  • 适用场景:前后端分离项目(仅返回数据,不返回页面)。

@RequestMapping

  • 定义接口的 URL 路径和支持的 HTTP 方法,可标注在类或方法上。

  • 类上:指定当前控制器所有接口的 基础路径(统一前缀)。

  • 方法上:指定当前接口的 具体路径(与类路径拼接为完整 URL)。

@GetMapping / @PostMapping / @PutMapping / @DeleteMapping

  • @RequestMapping 的简化版,

  • 分别对应 HTTP 的 GET/POST/PUT/DELETE 方法,专注于 RESTful 接口设计。

    注解 对应 HTTP 方法 适用场景
    @GetMapping GET 查询资源(如获取用户列表)
    @PostMapping POST 创建资源(如新增用户)
    @PutMapping PUT 全量更新资源(如修改用户所有信息)
    @DeleteMapping DELETE 删除资源(如删除用户)

@PathVariable

  • 作用:获取 URL 路径中的参数(如 /api/user/{id} 中的 id)。

@RequestParam

  • 作用:获取 URL 中的请求参数(QueryString,如 ?name=张三&age=20);
  • 核心属性:
    • value/name:参数名(与请求参数 key 对应);
    • required:是否必填(默认 true,不填会报错);
    • defaultValue:默认值(当参数未传递时使用)。

@RequestBody

  • 作用:接收请求体中的 JSON 数据,并自动绑定到 Java 对象(适用于 POST/PUT 等方法)。
相关推荐
用户908324602732 天前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
用户8307196840823 天前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
Java水解3 天前
Spring Boot 视图层与模板引擎
spring boot·后端
Java水解3 天前
一文搞懂 Spring Boot 默认数据库连接池 HikariCP
spring boot·后端
洋洋技术笔记3 天前
Spring Boot Web MVC配置详解
spring boot·后端
初次攀爬者4 天前
Kafka 基础介绍
spring boot·kafka·消息队列
用户8307196840824 天前
spring ai alibaba + nacos +mcp 实现mcp服务负载均衡调用实战
spring boot·spring·mcp
Java水解4 天前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端
初次攀爬者5 天前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺5 天前
搞懂@Autowired 与@Resuorce
java·spring boot·后端