前言
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 快速下载(官方脚手架)
- 访问 Spring 官方脚手架:http://start.spring.io/
- 选择构建工具(Maven Project)、Spring Boot 版本、项目基本信息(Group/Artifact 等),点击 "GENERATE" 下载项目压缩包。
2.2 手动搭建(Maven 方式)
如果不想用官方脚手架,也可手动创建 Maven 工程:
- 创建 Maven 工程,不使用骨架;
- 填写项目坐标(GroupId/ArtifactId/Version);
- 设置项目本地保存路径。
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 后:
- 自动导入场景所需的所有依赖;
- 自动完成场景相关的配置(无需手动写 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(可选)
- 访问 Banner 生成网站:http://www.bootschool.net/ascii;
- 生成自定义字符画,保存为
banner.txt放到resources目录; - 启动项目即可看到自定义 Banner。
四、全局配置文件
Spring Boot 提供 application.properties 或 application.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/.yamlvs.properties; - 语法:
- 使用
:分割键值对,冒号后必须加空格; - 缩进用空格(禁止 Tab),左对齐为同一层级;
- 树状结构更易读。
- 使用
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 包
- 打开 Maven 视图,执行
package命令; - 打包完成后,在
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:打包并部署
- 执行
package命令生成 War 包; - 将 War 包复制到外置 Tomcat 的
webapps目录; - 启动 Tomcat,自动解压并运行项目。
总结
本文从 Spring Boot 基础概念出发,讲解了项目构建、核心配置、入门案例和发布方式,覆盖了新手入门的核心知识点。Spring Boot 的核心优势在于 "简化配置、快速开发",掌握 Starter、自动配置、配置文件这三个核心,就能快速上手 Spring Boot 开发。后续可深入学习自动配置原理、数据访问、事务管理等进阶内容。