Spring Boot 入门

前言

Spring Boot 作为当下最流行的 Java 开发框架之一,以其 "约定优于配置" 的核心思想,极大简化了 Spring 应用的开发流程。本文将从 Spring Boot 基础介绍入手,一步步讲解项目构建、HelloWorld 实现、配置文件使用以及项目发布,帮助新手快速入门。

一、Spring Boot 核心介绍

1.1 什么是 Spring Boot

Spring Boot 是 Pivotal 团队推出的全新框架,"Boot" 意为 "引导",它并非对 Spring 功能的增强,而是提供了一套快速开发 Spring 应用的方式,让开发者摆脱繁杂的配置,专注于业务逻辑。

1.2 Spring Boot 核心特点

  • 嵌入式 Servlet 容器:内置 Tomcat/Jetty/Undertow 等,无需打包成 WAR 文件部署。
  • 简化 Maven 配置:通过 "Starter 启动器" 一键引入场景化依赖,无需手动管理 jar 包版本。
  • 自动配置:提供大量自动配置类,零 XML 配置即可完成 Spring 核心功能配置。

二、构建 Spring Boot 项目

2.1 快速下载(官方脚手架)

  1. 访问 Spring 官方脚手架:http://start.spring.io/
  2. 选择构建工具(Maven Project)、Spring Boot 版本、项目基本信息(Group/Artifact 等),点击 "GENERATE" 下载项目压缩包。

2.2 手动搭建(Maven 方式)

如果不想用官方脚手架,也可手动创建 Maven 工程:

  1. 创建 Maven 工程,不使用骨架
  2. 填写项目坐标(GroupId/ArtifactId/Version);
  3. 设置项目本地保存路径。

2.3 核心 POM.xml 配置

2.3.1 继承 Spring Boot 父工程

父工程提供了统一的依赖版本管理,是 Spring Boot 项目的基础:

XML 复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.2.RELEASE</version>
    <relativePath/> <!-- 从仓库查找父工程 -->
</parent>
2.3.2 设置编码格式

统一编码避免中文乱码问题:

XML 复制代码
<!-- 项目源码及编译输出的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2.3.3 引入 Web 启动器

Spring Boot 提供场景化启动器,spring-boot-starter-web 包含 Web 开发所需的 Tomcat、Spring MVC 等依赖:

XML 复制代码
<dependencies>
    <!-- SpringBoot Web 启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
2.3.4 创建启动类

启动类是 Spring Boot 项目的入口,需添加 @SpringBootApplication 注解:

java 复制代码
package com.hg;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        // 启动 Spring Boot 应用
        SpringApplication.run(Application.class, args);
    }
}

2.4 深入理解 Spring Boot Starter

2.4.1 传统 Spring 开发的痛点
  • 依赖管理繁琐:手动导入 jar 包易出错,版本冲突难解决;
  • 配置重复且复杂:Web 配置、数据库配置、事务配置等需重复编写 XML。
2.4.2 Starter 是什么?

Starter 是 Spring Boot 对常用功能场景的封装,引入对应 Starter 后:

  1. 自动导入场景所需的所有依赖;
  2. 自动完成场景相关的配置(无需手动写 XML)。

常见 Starter 示例:

  • spring-boot-starter-web:全栈 Web 开发(Tomcat + Spring MVC);
  • spring-boot-starter-jpa:JPA 操作数据库;
  • spring-boot-starter-redis:Redis 缓存操作。
2.4.3 Starter 命名规范
  • 官方 Starter :前缀为 spring-boot-starter-,如 spring-boot-starter-web
  • 第三方 Starter :后缀为 -spring-boot-starter,如 mybatis-spring-boot-starter

三、入门案例:HelloWorld

3.1 编写 Controller

创建简单的 Controller,处理 /hello 请求:

java 复制代码
package com.hg.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
public class HelloWorld {
    @RequestMapping("/hello")
    @ResponseBody
    public Map<String, Object> hello() {
        Map<String, Object> map = new HashMap<>();
        map.put("msg", "HelloWorld");
        return map;
    }
}

3.2 启动类位置要求

启动类需放在 Controller 同包或上级包 下,否则无法扫描到 Controller:

java 复制代码
com.hg
├── Application.java (启动类)
└── controller
    └── HelloWorld.java (控制器)

3.3 自定义启动 Banner(可选)

  1. 访问 Banner 生成网站:http://www.bootschool.net/ascii
  2. 生成自定义字符画,保存为 banner.txt 放到 resources 目录;
  3. 启动项目即可看到自定义 Banner。

四、全局配置文件

Spring Boot 提供 application.propertiesapplication.yml 全局配置文件,默认放在 resources 目录下,用于覆盖默认配置。

4.1 properties 配置文件

4.1.1 修改 Tomcat 端口
复制代码
server.port=8888
4.1.2 修改项目名称
复制代码
server.servlet.context-path=/springboot

4.2 yml 配置文件(推荐)

yml 是 YAML 格式的配置文件,具备天然的树状结构,语法更简洁。

4.2.1 yml 与 properties 区别
  • 扩展名:.yml / .yaml vs .properties
  • 语法:
    1. 使用 : 分割键值对,冒号后必须加空格;
    2. 缩进用空格(禁止 Tab),左对齐为同一层级;
    3. 树状结构更易读。
4.2.2 yml 配置示例
复制代码
server:
  port: 8090
  servlet:
    context-path: /springboot

五、Spring Boot 项目发布

Spring Boot 支持两种发布方式:Jar 包(内置容器)、War 包(外置容器)。

5.1 Jar 包发布(推荐)

步骤 1:添加打包插件

pom.xml 中添加 Spring Boot 打包插件:

XML 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
步骤 2:打包生成 Jar 包
  1. 打开 Maven 视图,执行 package 命令;
  2. 打包完成后,在 target 目录下生成 xxx.jar 包。
步骤 3:运行 Jar 包

在终端执行以下命令启动项目:

XML 复制代码
java -jar xxx.jar

5.2 War 包发布(适配外置 Tomcat)

步骤 1:修改打包方式

pom.xml 中默认的 jar 改为 war

XML 复制代码
<packaging>war</packaging>
步骤 2:排除内置 Tomcat 依赖

设置内置 Tomcat 依赖范围为 provided(打包时不包含):

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
步骤 3:自定义 War 包名称
XML 复制代码
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <warName>hello</warName>
    </configuration>
</plugin>
步骤 4:修改启动类

继承 SpringBootServletInitializer,重写 configure 方法:

java 复制代码
package com.hg;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 指定启动类
        return builder.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
步骤 5:打包并部署
  1. 执行 package 命令生成 War 包;
  2. 将 War 包复制到外置 Tomcat 的 webapps 目录;
  3. 启动 Tomcat,自动解压并运行项目。

总结

本文从 Spring Boot 基础概念出发,讲解了项目构建、核心配置、入门案例和发布方式,覆盖了新手入门的核心知识点。Spring Boot 的核心优势在于 "简化配置、快速开发",掌握 Starter、自动配置、配置文件这三个核心,就能快速上手 Spring Boot 开发。后续可深入学习自动配置原理、数据访问、事务管理等进阶内容。

相关推荐
Mr.45672 小时前
JDK17+Druid+SpringBoot3+ShardingSphere5 多表分库分表完整实践(MySQL+PostgreSQL)
java·数据库·spring boot·mysql·postgresql
小码哥_常2 小时前
从云端坠落:PUT和DELETE请求在大公司的失宠之谜
后端
RuoyiOffice2 小时前
SpringBoot+Vue3+Uniapp实现PC+APP双端考勤打卡设计:GPS围栏/内网双模打卡、节假日方案、定时预生成——附数据结构和核心源码讲解
java·spring·小程序·uni-app·vue·产品运营·ruoyi
文心快码BaiduComate2 小时前
有奖征集|解锁Comate超能力:一文玩转Comate Skills
前端·后端
StackNoOverflow2 小时前
Spring Boot 核心知识点总结
java·spring boot·后端
世界哪有真情2 小时前
使用 Arthas 精准排查 SpringBoot 多模块项目中未使用的类(安全清理无用代码)
java·后端
softbangong2 小时前
816-批量将图片分别转为pdf,文件夹下所有图片转为一个pdf
java·服务器·pdf·图片处理·图片转pdf·pdf工具·批量转换
玛卡巴卡ldf2 小时前
【LeetCode 手撕算法】(矩阵)73-矩阵置零、54-螺旋矩阵(贪吃蛇)、48-旋转图像
java·数据结构·算法·leetcode·力扣
不吃香菜学java2 小时前
苍穹外卖-新增套餐
java·spring boot·spring·tomcat·maven·mybatis