Spring Boot 简单入门
本文最后更新于84 天前,其中的信息可能已经过时,如有错误请发送邮件到3082654005@qq.com

Spring Boot 是 Spring 生态系统中用于快速开发 Spring 应用的框架,它的核心目标是简化配置、快速开发、开箱即用,让开发者能够专注于业务逻辑而非框架配置。下面从基础概念、环境搭建、项目开发到核心原理,全方位讲解 Spring Boot 入门知识。

一、Spring Boot 核心价值:为什么需要它?

在 Spring Boot 出现之前,使用传统 Spring 框架开发项目需要做大量繁琐工作:

  • 手动导入各种依赖(如 Spring MVC、数据库驱动等),还要处理依赖版本冲突
  • 编写大量 XML 配置文件(如配置 DispatcherServlet、数据源、事务管理器等)
  • 手动部署应用到外部服务器(如 Tomcat、Jetty)

而 Spring Boot 解决了这些问题,核心特点包括:

  1. 自动配置:根据类路径中的依赖自动配置 Spring 组件(无需手动配置)
  2. 起步依赖(Starter):预定义的依赖组合,简化依赖管理(如 spring-boot-starter-web 包含开发 Web 应用所需的所有依赖)
  3. 嵌入式服务器:内置 Tomcat、Jetty 等服务器,无需手动部署
  4. 无代码生成和 XML 配置:通过注解和约定代替繁琐配置
  5. 生产就绪特性:内置监控、健康检查、外部化配置等功能

二、环境准备:开发前的必要配置

要开发 Spring Boot 项目,需要先准备以下环境:

  1. JDK:Spring Boot 3.x 要求 JDK 17+,2.x 要求 JDK 8+(推荐 JDK 11,兼容性更好)
    验证:终端输入 java -version,能看到版本信息即为安装成功。
  2. 构建工具:Maven 或 Gradle(推荐 Maven,更常用)
    验证:终端输入 mvn -v,能看到版本信息即为安装成功。
  3. IDE:推荐 IntelliJ IDEA(社区版足够)或 Eclipse(需安装 Spring Tools 插件)

三、第一个 Spring Boot 项目:从创建到运行

我们以开发一个简单的 Web 接口为例,完整演示开发流程。

步骤 1:创建 Spring Boot 项目

推荐使用 Spring Initializr 快速创建项目,有两种方式:

方式 1:网页版创建(适合新手)
  1. 打开 Spring Initializr(官方项目生成工具)
  2. 配置项目信息:
    • Project:选择 Maven(或 Gradle)
    • Language:Java
    • Spring Boot:选择 3.2.x(稳定版本)
    • Group:组织标识(如 com.example
    • Artifact:项目名(如 demo
    • Name:项目显示名(默认同 Artifact)
    • Package name:包名(默认 com.example.demo
    • Java:选择 17(对应 Spring Boot 3.x)
  3. 选择依赖:在 Dependencies 中搜索并添加 Spring Web(开发 Web 应用的核心依赖)
  4. 点击 Generate 下载项目压缩包,解压后用 IDE 打开。
方式 2:IDE 直接创建(更高效)

以 IntelliJ IDEA 为例:

  1. 点击 File -> New -> Project
  2. 左侧选择 Spring Initializr,右侧保持默认(使用官方地址)
  3. 填写项目信息(同网页版),选择 Spring Web 依赖
  4. 选择项目保存路径,点击 Create 完成创建

步骤 2:项目结构解析

创建完成后,项目结构如下(核心目录 / 文件):

plaintext

demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               └── DemoApplication.java  // 项目主类(启动入口)
│   │   └── resources/
│   │       ├── application.properties  // 全局配置文件
│   │       ├── static/  // 静态资源(如 CSS、JS、图片)
│   │       └── templates/  // 模板文件(如 Thymeleaf、Freemarker)
│   └── test/  // 测试代码目录
├── pom.xml  // Maven 依赖配置文件
└── README.md

核心文件说明:

  • DemoApplication.java:项目启动类,包含 main 方法,通过 @SpringBootApplication 注解标识
  • application.properties:配置文件,可修改端口号、日志级别等(也可使用 YAML 格式 application.yml,更易读)
  • pom.xml:管理项目依赖,Spring Boot 的起步依赖在这里声明

步骤 3:编写第一个 Web 接口

我们来开发一个简单的接口:访问 http://localhost:8080/hello 时,返回字符串 “Hello Spring Boot!”。

  1. 在 com.example.demo 包下创建一个 controller 子包(规范:控制器类放在 controller 包中)
  2. 在 controller 包中创建 HelloController.java 类:

java

运行

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

// @RestController:标识这是一个控制器,且所有方法返回值直接作为响应体(无需视图解析器)
@RestController
public class HelloController {

    // @GetMapping("/hello"):表示接收 GET 请求,路径为 /hello
    @GetMapping("/hello")
    public String sayHello() {
        // 开发者只需编写业务逻辑:返回一个字符串
        return "Hello Spring Boot!";
    }
}

步骤 4:运行项目并测试

  1. 运行项目:找到 DemoApplication.java,右键点击 Run DemoApplication(IDE 会自动编译并启动)
  2. 观察控制台输出,出现以下日志说明启动成功:

plaintext

Tomcat started on port 8080 (http) with context path ''
Started DemoApplication in 1.234 seconds (process running for 2.345)
  1. 测试接口:打开浏览器访问 http://localhost:8080/hello,页面会显示 Hello Spring Boot!

四、核心原理:Spring Boot 做了什么?开发者做了什么?

通过上面的例子,我们可以清晰区分两者的职责:

1. Spring Boot 自动完成的工作

  • 依赖管理:通过 spring-boot-starter-web 自动导入了 Spring MVC、Tomcat 服务器、Jackson(JSON 解析)等依赖,无需手动添加。
  • 自动配置
    • 自动配置 DispatcherServlet(Spring MVC 的核心控制器),处理 HTTP 请求
    • 自动配置 Tomcat 服务器(默认端口 8080),无需手动部署
    • 自动扫描控制器(通过 @RestController 标识),并将接口映射到 URL
  • 启动流程:通过 DemoApplication 的 main 方法启动 Spring 容器,加载所有自动配置和开发者定义的组件。

2. 开发者需要做的工作

  • 定义业务组件:如 HelloController 这样的控制器,通过注解(@RestController@GetMapping)声明组件功能。
  • 编写业务逻辑:在控制器方法中实现具体功能(如 sayHello() 返回字符串)。
  • 必要的自定义配置:如果需要修改默认配置(如端口号),在 application.properties 中添加:properties# 修改端口号为 8081 server.port=8081

五、关键注解解析

Spring Boot 大量使用注解简化配置,核心注解如下:

  1. @SpringBootApplication(主类上):
    是一个组合注解,包含三个核心注解:
    • @SpringBootConfiguration:标识这是一个配置类(类似传统 Spring 的 @Configuration
    • @EnableAutoConfiguration:开启自动配置(核心!Spring Boot 根据依赖自动配置 Bean)
    • @ComponentScan:自动扫描当前包及子包下的组件(如 @RestController@Service 等)
  2. @RestController(控制器类上):
    组合了 @Controller 和 @ResponseBody,表示该类是控制器,且所有方法的返回值直接作为 HTTP 响应体(适合开发 API 接口)。
  3. @GetMapping(“/path”)(方法上):
    表示接收 HTTP GET 请求,路径为 /path(类似的还有 @PostMapping@PutMapping 等,对应不同请求方式)。

六、扩展:添加一个简单的业务层

实际开发中,我们会将业务逻辑放在 Service 层,控制器调用 Service 层处理业务。

  1. 创建 service 包,新建 HelloService.java

java

运行

package com.example.demo.service;

import org.springframework.stereotype.Service;

// @Service:标识这是一个业务层组件,会被 Spring 容器管理
@Service
public class HelloService {
    // 业务逻辑:拼接欢迎语
    public String getWelcomeMessage(String name) {
        return "Hello, " + name + "! Welcome to Spring Boot!";
    }
}
  1. 修改 HelloController,注入 HelloService 并调用:

java

运行

package com.example.demo.controller;

import com.example.demo.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    // @Autowired:自动注入 HelloService 实例(Spring 容器管理的对象)
    @Autowired
    private HelloService helloService;

    // @RequestParam:接收 URL 中的参数(如 http://localhost:8080/welcome?name=Tom)
    @GetMapping("/welcome")
    public String welcome(@RequestParam String name) {
        // 调用 Service 层处理业务
        return helloService.getWelcomeMessage(name);
    }
}
  1. 重启项目,访问 http://localhost:8080/welcome?name=Tom,会返回 Hello, Tom! Welcome to Spring Boot!

七、总结

通过这个简单项目,我们可以看到:

  • Spring Boot 负责:环境配置、依赖管理、服务器启动、组件自动装配等 “框架性工作”,让开发者无需关注底层细节。
  • 开发者负责:定义业务组件(Controller、Service 等)、编写业务逻辑、必要的自定义配置(如端口号),专注于业务实现。

Spring Boot 的核心思想是 “约定优于配置”:通过预定义的约定(如目录结构、注解规则)减少配置,让项目开发更高效。后续可以进一步学习数据库集成(如 Spring Data JPA)、事务管理、日志处理等功能,逐步构建复杂应用。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇