背景

本文是《Java 后端从小白到大神》修仙系列之框架学习,Java框架之 SpringBoot 框架第一篇SpringBoot框架 可以说是微服务的基石,很多复杂的系统几乎都是通过微服务构造而来,我们现在开始学习吧。

文章概览

  1. 什么是 Spring Boot
  2. 第一个 Spring Boot 应用
  3. Spring Boot 项目结构
  4. Spring Boot 配置文件详解
  5. 构建 RESTful API

1. 什么是 Spring Boot?为什么我们需要它?

一、Spring 的痛点

  • 配置繁琐(XML/JavaConfig混合)
  • 项目依赖复杂,版本冲突频繁
  • 缺少统一的快速启动模板

二、Spring Boot 的目标

  • 快速开发 Spring 应用
  • 内嵌服务器(Tomcat/Jetty/Undertow)
  • 它提供了开箱即用的自动配置(Auto-Configuration),自动帮你配置 Spring 应用中常见的组件,比如 Spring MVC、数据源、JPA、Security 等。
  • 无需 XML 配置文件
  • 简单来说,Spring Boot 就是“用最少配置快速搭建Spring应用”的工具和框架。

三、Spring vs Spring Boot

特性 Spring Spring Boot
配置方式 手动配置 自动装配 + 可选配置
启动方式 容器部署 WAR 包 独立运行 JAR 包
学习曲线 陡峭 平缓

2. 第一个 Spring Boot 应用:Hello World

一、创建项目方式

二、示例代码

1
2
3
4
5
6
@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

三、添加 REST Controller

1
2
3
4
5
6
7
@RestController
public class HelloController {
  @GetMapping("/hello")
  public String hello() {
    return "Hello, Spring Boot!";
  }
}

四、小结

  • 项目结构清晰
  • 无需配置即可启动 Web 服务

3. 理解 Spring Boot 项目结构与入口类

一、项目结构

1
2
3
4
5
6
7
├── src/main/java
│   └── com.example.demo
│       ├── DemoApplication.java
│       └── controller/HelloController.java
├── src/main/resources
│   ├── application.properties
│   └── static/

二、@SpringBootApplication 注解

1
@SpringBootApplication

等同于:

1
2
3
@Configuration
@EnableAutoConfiguration
@ComponentScan

三、主类位置建议

放在 com.example.demo 的根包下,确保能扫描所有子包。

4. Spring Boot 配置文件详解:properties vs yaml

一、application.properties 示例

1
2
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/db

二、application.yml 示例

1
2
3
4
5
server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db

三、多环境配置

  • application-dev.yml
  • application-prod.yml

激活方式:

1
spring.profiles.active=dev

四、@Value 注解注入配置值

1
2
@Value("${server.port}")
private int port;

5. 构建 RESTful API:Spring Boot + Spring MVC

一、Controller 示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
@RestController
@RequestMapping("/api/users")
public class UserController {

  @GetMapping("/{id}")
  public User getUser(@PathVariable Long id) {
    return new User(id, "张三");
  }

  @PostMapping
  public String createUser(@RequestBody User user) {
    return "创建成功:" + user.getName();
  }
}

二、请求参数注解说明

注解 说明
@RequestParam 获取查询参数
@PathVariable 获取路径参数
@RequestBody 获取 JSON 请求体
@ResponseBody 将返回值转为 JSON 输出

三、常见返回值封装类建议

1
2
3
4
5
6
public class Result<T> {
  private int code;
  private String msg;
  private T data;
  // getter/setter/静态构造方法
}

总结

SpringBoot 框架是微服务生态的基石,必知必会。