Spring Boot框架是由Pivotal团队提供的一款开源框架,旨在简化Spring应用的搭建与开发过程。它通过自动配置和约定优于配置的方式,帮助开发者快速搭建独立的、生产级别的应用,减少了大量配置工作。Spring Boot框架支持内置的web服务器、数据库连接等多种功能,使得开发者可以更加专注于业务逻辑的实现。
引入Spring Boot框架 简介Spring BootSpring Boot是由Pivotal团队提供的开源框架,旨在简化新Spring应用的初始搭建以及开发过程。它通过约定优于配置的方式,帮助开发者快速搭建独立的、生产级别的应用。Spring Boot的核心功能是简化Spring应用程序的配置过程,使得开发者可以更专注于业务逻辑的实现。
Spring Boot旨在提供一种快速、简易的方式来创建独立的、生产级别的基于Spring的应用程序。它为Spring开发者提供了默认配置,以减少配置的工作量和复杂性。Spring Boot的核心特性包括:
- 内置的web服务器支持(如Tomcat、Jetty和Undertow)。
 - 自动配置支持,使得开发者不必编写大量配置代码。
 - 对第三方库的嵌入式依赖管理。
 - 生产就绪的特性,如健康检查、指标收集等。
 - 强大的日志框架集成,如Logback。
 - 集成测试支持,使得单元测试更为简便。
 
Spring Boot的好处在于它大大简化了新Spring应用的搭建过程,减少了开发者在配置上的工作量,使得开发者可以更专注于业务逻辑的实现。以下是Spring Boot的一些主要优势:
- 减少配置:Spring Boot提供了一种约定优于配置的方式,通过自动配置来减少开发者所需的配置工作。例如,它自动配置web服务器、数据库连接等,开发者只需关注业务逻辑即可。
 - 快速启动:Spring Boot可以帮助开发者快速搭建一个全新的Spring项目,从项目创建到运行,整个过程非常快速。
 - 生产就绪:Spring Boot内置了许多生产就绪的特性,如健康检查、指标收集等,使得开发者更容易构建生产级别的应用。
 - 依赖管理:Spring Boot提供了内置的依赖管理,能够自动处理版本冲突,使得依赖管理更为简单。
 - 内置的web服务器支持:Spring Boot支持内置的web服务器(如Tomcat、Jetty和Undertow),使得开发者可以更方便地构建web应用。
 - 集成测试支持:Spring Boot提供了集成测试的支持,使得单元测试更容易编写和执行。
 
Spring Boot适用于需要快速搭建、简化配置的Spring应用。它特别适用于以下场景:
- 独立的web应用:Spring Boot内置了web服务器的支持,可以直接运行独立的web应用,无需额外的web容器。
 - 微服务应用:Spring Boot适用于构建微服务应用,它提供了很多微服务相关的特性,如服务发现、熔断、负载均衡等。
 - 快速原型开发:对于需要快速原型开发的应用,Spring Boot提供了快速搭建和配置的能力,使得开发者可以快速验证想法。
 - API接口开发:Spring Boot内置了RESTful API的支持,适合用于开发API接口,如REST接口的创建和测试。
 - 简单的批处理任务:对于简单的批处理任务,Spring Boot提供了快速构建和运行的能力,可以快速创建和执行批处理任务。
 
开发Spring Boot应用需要的操作系统环境和开发工具如下:
- 操作系统:任何支持Java的系统,如Windows、Linux、macOS等。
 - Java环境:需要安装Java开发工具包(JDK),建议使用Java 8或更高版本。
 - 开发工具:推荐使用IntelliJ IDEA或Eclipse等IDE(集成开发环境),这些IDE提供了对Spring Boot的良好支持。以下是如何在不同操作系统上安装这些开发环境的简要步骤:
 
在Windows上安装Java环境
- 访问Oracle官网或Adoptium官方下载页面,下载JDK 8或更高版本。
 - 运行下载的安装程序,根据安装向导进行安装。
 - 安装完成后,设置环境变量:
- 打开“系统属性”窗口。
 - 点击“环境变量”按钮。
 - 在“系统变量”区域,新建或编辑
JAVA_HOME环境变量,值设置为JDK安装路径。 - 编辑
Path环境变量,添加%JAVA_HOME%\bin。 
 
在Linux上安装Java环境
- 使用终端命令行执行以下操作:
sudo apt update sudo apt install openjdk-11-jdk - 验证安装是否成功:
java -version 
在macOS上安装Java环境
- 使用Homebrew安装JDK:
brew install --cask adoptopenjdk - 验证安装是否成功:
java -version 
安装IDE
- IntelliJ IDEA:
- 访问官网下载页面,选择社区版或专业版(取决于需要的功能)。
 - 安装完成后,启动IDE,首次启动时进行一些必要的配置,如选择安装语言、设置IDE外观等。
 - 在欢迎页面,点击“Configure” -> “Plugins”,确保安装了Spring插件。
 
 - Eclipse:
- 访问官网下载页面,选择Eclipse IDE for Enterprise Java Developers或Spring Tools Suite。
 - 安装完成后,启动Eclipse,首次启动时进行一些必要的配置,如选择安装语言、设置IDE外观等。
 - 在Eclipse中安装Spring插件:点击“Help” -> “Eclipse Marketplace”,搜索“Spring Tools Suite”,选择并安装。
 
 
Spring Boot项目通常使用Maven或Gradle进行构建。以下是安装和配置这些构建工具的步骤。
Maven安装
- 下载Maven:
- 访问Maven官网,选择下载选项,下载最新的稳定版本。
 - 解压下载的压缩包到指定目录。
 
 - 设置环境变量:
- 打开“系统属性”窗口。
. 
 - 打开“系统属性”窗口。
 - 验证安装:
- 打开终端或命令行工具,输入
mvn -v,检查输出是否显示Maven版本信息。 
 - 打开终端或命令行工具,输入
 
Gradle安装
- 下载Gradle:
- 访问Gradle官网,选择下载选项,下载最新的稳定版本。
 - 解压下载的压缩包到指定目录。
 
 - 设置环境变量:
- 打开“系统属性”窗口。
 - 点击“环境变量”按钮。
 - 在“系统变量”区域,新建或编辑
GRADLE_HOME环境变量,值设置为Gradle安装路径。 - 编辑
Path环境变量,添加%GRADLE_HOME%\bin。 
 - 验证安装:
- 打开终端或命令行工具,输入
gradle -v,检查输出是否显示Gradle版本信息。 
 - 打开终端或命令行工具,输入
 
Spring Boot项目的创建可以通过Spring Initializr、IDE插件或命令行工具完成。以下是使用Spring Initializr创建项目的步骤:
- 打开浏览器,访问Spring Initializr。
 - 在“Project”选项卡中,填写项目信息,如项目名称、语言(Java)、依赖(Web、Thymeleaf等)。
 - 在“Packaging”选项卡中,选择项目打包方式(Jar或War)。
 - 点击“Generate”按钮,下载项目压缩包。
 - 解压压缩包,将项目文件夹导入IDE中。
 
使用Spring Initializr创建项目示例
假设要创建一个名为my-spring-boot-app的Spring Boot项目,选择以下配置:
- Project: Maven Project
 - Language: Java
 - Dependencies: Web, Thymeleaf
 
生成的项目结构如下:
my-spring-boot-app/
├── pom.xml
├── src
    ├── main
    │   ├── java
    │   │   └── com.example.myapp
    │   │       └── MySpringBootApplication.java
    │   └── resources
    │       ├── application.properties
    │       └── static
    │       └── templates
    └── test
        └── java
            └── com.example.myapp
                └── MySpringBootApplicationTests.java
 第一个Spring Boot应用
 创建基本的Spring Boot项目结构
在上一节中,我们已经通过Spring Initializr创建了一个基本的Spring Boot项目。项目的基本结构如下:
my-spring-boot-app/
├── pom.xml
├── src
    ├── main
    │   ├── java
    │   │   └── com.example.myapp
    │   │       └── MySpringBootApplication.java
    │   └── resources
    │       ├── application.properties
    │       └── static
    │       └── templates
    └── test
        └── java
            └── com.example.myapp
                └── MySpringBootApplicationTests.java
项目目录结构解释
- pom.xml:Maven构建文件,定义了项目的依赖和构建配置。
 - src/main/java:存放项目的主要Java源代码。
 - src/main/resources:存放资源文件,如配置文件、模板文件等。
 - src/test/java:存放测试代码。
 
在src/main/java目录下,创建一个新的Java类MySpringBootApplication.java,并将以下代码粘贴进去:
package com.example.myapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}
@SpringBootApplication注解解释
@SpringBootApplication是一个组合注解,包含了以下三个注解:@Configuration:表示当前类是一个配置类。@EnableAutoConfiguration:启用基于类路径中的已定义依赖自动配置。@ComponentScan:扫描当前包及其子包中的组件。
在src/main/java目录下,创建一个新的Java类HelloController.java,并将以下代码粘贴进去:
package com.example.myapp;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
@RestController注解解释
@RestController是一个组合注解,相当于@Controller和@ResponseBody。@Controller:表示当前类是一个控制器类。@ResponseBody:表示该方法的返回值将直接写入HTTP响应体。
@GetMapping注解解释
@GetMapping是一个组合注解,相当于@RequestMapping(method = RequestMethod.GET)。@RequestMapping:映射HTTP请求到具体的处理器方法。method:指定具体的HTTP请求方法。
启动Spring Boot应用
在IDE中,找到MySpringBootApplication类中的main方法,右键点击并选择“Run”来启动Spring Boot应用。
测试应用功能
打开浏览器,访问http://localhost:8080/hello,页面将显示“Hello, Spring Boot!”,这表示应用已经成功运行。
使用命令行启动应用
如果使用命令行启动应用,可以在项目根目录下执行以下命令:
mvn spring-boot:run
或者,也可以直接运行MySpringBootApplication类,如:
java -jar target/my-spring-boot-app.jar
 Spring Boot配置管理
 应用配置文件介绍
Spring Boot使用配置文件来管理应用的配置信息,常见的配置文件包括application.properties和application.yml。默认情况下,Spring Boot优先读取application.properties文件,如果该文件不存在,则读取application.yml文件。
配置文件通常位于src/main/resources目录下。
application.properties示例
# 设置端口号
server.port=8080
# 设置应用上下文路径
server.servlet.context-path=/myapp
# 设置静态资源路径
spring.mvc.static-path-pattern=/resources/**
# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
application.yml示例
server:
  port: 8080
servlet:
  context-path: /myapp
spring:
  mvc:
    static-path-pattern: /resources/**
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
 配置文件的使用
Spring Boot通过自动配置和环境变量支持,使得配置文件的使用非常简单。以下是一些常见的配置项:
- Server配置:
server.port:设置服务器端口(默认为8080)。server.servlet.context-path:设置应用的上下文路径。server.tomcat.uri-encoding:设置Tomcat的默认编码。
 - Spring MVC配置:
spring.mvc.static-path-pattern:设置静态资源路径。
 - DataSource配置:
spring.datasource.url:数据库连接URL。spring.datasource.username:数据库用户名。spring.datasource.password:数据库密码。spring.datasource.driver-class-name:数据库驱动类名。
 
Spring Boot支持配置文件的外部化,允许开发者通过命令行参数、环境变量、JNDI属性等多种方式来覆盖配置文件中的属性。
使用命令行参数覆盖配置
java -jar my-spring-boot-app.jar --server.port=8081
使用环境变量覆盖配置
export SERVER_PORT=8081
使用JNDI属性覆盖配置
jndi:
  propKey: propValue
使用外部配置文件覆盖配置
在配置文件中,可以引用外部配置文件。例如,在application.properties中添加以下内容:
spring.config.location=/path/to/config.properties
同样,也可以使用spring.profiles.active属性来激活不同的配置文件。例如:
spring.profiles.active=prod
在src/main/resources目录下创建application-prod.properties文件,添加生产环境配置:
# 生产环境配置
logging.level.root=INFO
 Spring Boot核心组件介绍
 @SpringBootApplication注解
@SpringBootApplication是一个组合注解,用于标记主类。它包含了以下三个注解:
@Configuration:表示当前类是一个配置类。@EnableAutoConfiguration:启用基于类路径中的已定义依赖自动配置。@ComponentScan:扫描当前包及其子包中的组件。
示例代码
package com.example.myapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}
 自动配置
Spring Boot的自动配置是其一大特色,它会根据类路径中的已定义依赖,自动配置相应的组件。例如,如果项目中添加了数据库依赖,Spring Boot会自动配置数据库连接。
自动配置是通过@EnableAutoConfiguration注解实现的,它会读取META-INF/spring.factories文件中的配置,并根据类路径中的依赖进行自动配置。
示例代码
假设项目中添加了以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
Spring Boot会自动配置JPA和H2数据库,并根据application.properties中的配置信息自动配置相应的数据库连接。
Spring Boot通过“启动器”来简化项目的依赖管理。启动器是一组预定义的依赖集合,通常以-starter结尾。例如,spring-boot-starter-web包含了构建Web应用所需的最小依赖集合。
示例代码
在pom.xml中添加以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
上述依赖包含了构建Web应用所需的依赖,如Spring MVC、Tomcat等。
Spring Boot应用部署 打包Spring Boot应用Spring Boot支持将应用打包为可执行的JAR或WAR文件。以下是打包步骤:
打包为JAR文件
mvn package
打包完成后,可以在target目录下找到生成的JAR文件,例如my-spring-boot-app.jar。
打包为WAR文件
mvn package
打包完成后,可以在target目录下找到生成的WAR文件,例如my-spring-boot-app.war。
将Spring Boot应用部署到应用服务器,可以使用内置的web服务器(如Tomcat、Jetty)或外部应用服务器(如Apache Tomcat)。
使用内置web服务器
Spring Boot内置了web服务器支持,可以直接运行my-spring-boot-app.jar文件:
java -jar target/my-spring-boot-app.jar
部署到外部应用服务器
将WAR文件部署到外部应用服务器,如Apache Tomcat,需要先安装Tomcat。
- 下载并安装Apache Tomcat。
 - 将生成的WAR文件复制到
webapps目录下。 - 启动Tomcat服务器。
 
示例代码
假设Tomcat安装在C:\apache-tomcat-9.0.56目录下,执行以下步骤:
- 复制
my-spring-boot-app.war文件到C:\apache-tomcat-9.0.56\webapps目录下。 - 启动Tomcat服务器,可以通过命令行执行以下命令:
 
C:\apache-tomcat-9.0.56\bin\startup.bat
 部署到云平台
将Spring Boot应用部署到云平台,可以使用云服务提供商提供的服务,如阿里云、腾讯云、AWS等。以下是部署到阿里云ECS的基本步骤:
- 在阿里云控制台创建ECS实例。
 - 登录ECS实例,安装Java运行环境。
 - 将应用打包为JAR或WAR文件,上传到ECS实例。
 - 使用命令行启动应用:
 
java -jar my-spring-boot-app.jar
示例代码
假设ECS实例已安装Java环境,执行以下步骤:
- 上传
my-spring-boot-app.jar文件到ECS实例。 - 启动应用:
 
java -jar my-spring-boot-app.jar
为确保应用在服务器重启时自动启动,可以使用系统服务管理工具(如systemd在Linux上)创建一个服务文件,将应用设置为系统服务。
使用systemd创建服务文件
- 创建一个服务文件,如
/etc/systemd/system/myapp.service: 
[Unit]
Description=My Spring Boot Application
After=syslog.target
[Service]
User=root
ExecStart=/usr/bin/java -jar /path/to/my-spring-boot-app.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
- 重新加载systemd配置:
 
systemctl daemon-reload
- 启动并启用服务:
 
systemctl start myapp
systemctl enable myapp