十五:java web(7)-- Spring Boot

目录

[1. Spring Boot 简介](#1. Spring Boot 简介)

[1.1 简介](#1.1 简介)

[1.2 Spring Boot 的特点](#1.2 Spring Boot 的特点)

[1.3 Spring Boot 和 Spring 的关系](#1.3 Spring Boot 和 Spring 的关系)

[2. Spring Boot 快速入门](#2. Spring Boot 快速入门)

[2.1 创建第一个 Spring Boot 项目](#2.1 创建第一个 Spring Boot 项目)

[3. Spring Boot 配置管理](#3. Spring Boot 配置管理)

[3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐yml](#3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐yml)

[3.2 配置文件的环境管理](#3.2 配置文件的环境管理)

[4. 常用的 Starter 依赖](#4. 常用的 Starter 依赖)

[4.1 spring-boot-starter-web](#4.1 spring-boot-starter-web)

[4.2 spring-boot-starter-data-jpa](#4.2 spring-boot-starter-data-jpa)

[4.3 spring-boot-starter-thymeleaf](#4.3 spring-boot-starter-thymeleaf)

[4.4 spring-boot-starter-security](#4.4 spring-boot-starter-security)

[4.5 spring-boot-starter-logging](#4.5 spring-boot-starter-logging)

[4.6 spring-boot-starter-test](#4.6 spring-boot-starter-test)

[4.7 spring-boot-starter-activemq](#4.7 spring-boot-starter-activemq)

[4.8 spring-boot-starter-mail](#4.8 spring-boot-starter-mail)

[4.9 spring-boot-starter-cache](#4.9 spring-boot-starter-cache)

[4.10 spring-boot-starter-actuator](#4.10 spring-boot-starter-actuator)

[5. 内嵌服务器与项目打包](#5. 内嵌服务器与项目打包)

[5.1 内嵌服务器](#5.1 内嵌服务器)

[5.1.1 默认内嵌 Tomcat](#5.1.1 默认内嵌 Tomcat)

[5.1.2 选择其他内嵌服务器](#5.1.2 选择其他内嵌服务器)

[5.1.3 修改内嵌服务器的配置](#5.1.3 修改内嵌服务器的配置)

[5.2 项目打包](#5.2 项目打包)

[5.2.1 JAR 包打包](#5.2.1 JAR 包打包)

[5.2.2 WAR包打包](#5.2.2 WAR包打包)


1. Spring Boot 简介

复制代码
### **1.1 简介**

* Spring Boot 是一个开源的 Java 框架,它简化了 Spring 应用的配置和部署过程。Spring Boot 提供了开箱即用的功能,可以大大减少开发人员的配置工作,并让开发人员专注于业务逻辑的实现。它通过内嵌的服务器(如 Tomcat 或 Jetty)使得 Java 应用可以像普通应用一样运行,不需要部署到外部的 Web 服务器。

* Spring Boot 的目标是通过减少样板代码和简化配置,使得开发人员能够快速启动和开发 Spring 应用。它基于 Spring 框架,并与 Spring Cloud 深度集成,特别适用于微服务架构。

* 终于不需要再写 Spring 配置文件和 Bean 了,解脱!这些繁琐的配置和 Bean 定义让人头大,特别是在早期的 Spring 版本中,繁重的 XML 配置是让开发过程变得异常复杂。
复制代码
### 1.2 Spring Boot 的特点

* **自动配置**:Spring Boot 通过自动配置特性减少了显式配置的需求,很多常用的配置会自动根据应用环境进行推断,简化了配置过程。

* **独立运行**:Spring Boot 可以嵌入常用的 Web 服务器(如 Tomcat、Jetty),不再需要外部容器,因此应用可以直接运行。

* **简化 Maven 配置**:Spring Boot 提供了许多默认的 Maven 和 Gradle 配置,开发人员无需手动配置依赖。

* **生产级特性**:Spring Boot 提供了如健康检查、度量监控、日志管理等生产环境必备功能。

* **微服务支持**:与 Spring Cloud 无缝集成,提供了开发和部署微服务架构所需的各类工具。

* **快速开发**:使用 Spring Boot 的快速开发特性,可以非常快速地构建和启动应用。

* **不依赖外部配置**:Spring Boot 封装了很多常用的 Spring 配置,避免了很多繁琐的 XML 配置和类配置。
复制代码
### 1.3 Spring Boot 和 Spring 的关系

* Spring 和 Spring Boot 是两个不同的概念,Spring 是一个全面的企业级应用框架,提供了广泛的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问等。Spring Boot 则是在 Spring 框架的基础上,针对开发过程中复杂的配置和部署问题,提供了自动配置和快速启动的解决方案。

* **Spring** 是一个功能强大但需要大量手动配置的框架,开发人员需要自己设置数据源、Web 容器等各种配置。

* **Spring Boot** 则是基于 Spring 的开箱即用框架,它通过自动配置、内嵌 Web 服务器等特性,极大简化了开发过程。

* 因此,Spring Boot 可以看作是 Spring 的一种扩展和简化版本,它在 Spring 框架的基础上增加了许多默认配置和特性,使得开发人员不必重复编写常见的配置,从而更专注于业务代码的开发。

2. Spring Boot 快速入门

复制代码
### 2.1 创建第一个 Spring Boot 项目

* 新建项目
  * ![](https://i-blog.csdnimg.cn/direct/ba6089ac9de14f53bc09f611920c645a.png)
* 如果没有java8
  * 修改一下服务器URL:[https://start.aliyun.com/](https://start.aliyun.com/ "https://start.aliyun.com/")
  * ![](https://i-blog.csdnimg.cn/direct/487cf714e42848ac88fee46f81169590.png)
* 选择依赖项 点击创建
  * ![](https://i-blog.csdnimg.cn/direct/6224947efa2d4a4080c3b86b0706f03b.png)
* 因为 依赖项选的不多 直接启动就可以了
  * ![](https://i-blog.csdnimg.cn/direct/ea527e3c8e954ab4b7c8cbf99f3cef1f.png)
* 前端访问接口
  * ![](https://i-blog.csdnimg.cn/direct/28f9de604b504dbabed221597bd188df.png)
  * ![](https://i-blog.csdnimg.cn/direct/acf1a8dce0084ead9b0f676ac0f18c90.png)

3. Spring Boot 配置管理

复制代码
### 3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐yml

* **`application.properties` 配置** `application.properties` 是基于键值对的配置文件,格式较为简单易懂。每一行表示一个配置项,使用 `=` 或 `:` 来分隔键和值。
  *

        server.port=8080
        spring.datasource.url=jdbc:mysql://localhost:3306/lirui
        spring.datasource.username=root
        spring.datasource.password=root
        logging.level.org.springframework=INFO

* **`application.yml` 配置** `application.yml` 是基于 YAML 格式的配置文件,支持层级结构,适合复杂配置,尤其是当有嵌套属性时更具可读性。
  *

        server:
          port: 8080
        spring:
          datasource:
            url: jdbc:mysql://localhost:3306/lirui
            username: root
            password: root
        logging:
          level:
            org.springframework: INFO
复制代码
### 3.2 配置文件的环境管理

* Spring Boot 支持通过 **环境配置** 来管理不同环境下的配置。例如,可以为开发、测试和生产环境分别配置不同的 `application.properties` 或 `application.yml` 文件。

* **使用 `application-{profile}.properties` 或 `application-{profile}.yml`** Spring Boot 支持根据不同的 **profile** 使用不同的配置文件。例如,可以创建以下文件:

  * `application-dev.properties` 或 `application-dev.yml`:开发环境的配置。

  * `application-test.properties` 或 `application-test.yml`:测试环境的配置。

  * `application-prod.properties` 或 `application-prod.yml`:生产环境的配置。

* 在 `application.properties` 或 `application.yml` 中设置默认的 **profile**:

  *

        spring.profiles.active=dev

* 配置文件优先级

  * `application.properties` 或 `application.yml`。

  * `application-{profile}.properties` 或 `application-{profile}.yml`(例如 `application-dev.properties`)。

  * 配置文件中的配置项会覆盖较低优先级的配置。

* **通过 `@Value` 注解获取环境变量** Spring Boot 可以将配置文件中的属性注入到 Spring Bean 中。可以使用 `@Value` 注解来读取配置文件中的值。

  *

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

* **通过 `@ConfigurationProperties` 绑定配置** 如果配置项较多,可以通过 `@ConfigurationProperties` 注解将配置项绑定到 Java 对象中。

  *

        @ConfigurationProperties(prefix = "spring.datasource")
        @Component
        public class DataSourceConfig {
            private String url;
            private String username;
            private String password;
            // getters and setters
        }

**4.**常用的 Starter 依赖

复制代码
### 4.1 spring-boot-starter-web

* 用于构建 Web 应用,包括 RESTful API 服务。默认集成了 Tomcat 作为 Web 容器,支持 Spring MVC 和 Jackson(JSON 处理)。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
复制代码
### 4.2 spring-boot-starter-data-jpa

* 用于集成 JPA 和 Hibernate,简化数据库操作,支持自动配置数据源。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
复制代码
### 4.3 spring-boot-starter-thymeleaf

* 集成 Thymeleaf 模板引擎,用于构建基于服务器端渲染的 Web 应用。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
复制代码
### 4.4 spring-boot-starter-security

* 提供基本的安全功能,如认证和授权功能。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
复制代码
### 4.5 spring-boot-starter-logging

* 集成 SLF4J 和 Logback 提供日志功能,是默认的日志配置。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
      </dependency>
复制代码
### 4.6 spring-boot-starter-test

* 用于集成测试框架,包括 JUnit、Mockito 和 Spring Test 等。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
      </dependency>
复制代码
### 4.7 spring-boot-starter-activemq

* 集成 ActiveMQ,用于消息队列功能。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-activemq</artifactId>
      </dependency>
复制代码
### 4.8 spring-boot-starter-mail

* 用于集成邮件发送功能,配置了 JavaMail API。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-mail</artifactId>
      </dependency>
复制代码
### 4.9 spring-boot-starter-cache

* 提供缓存功能,支持多种缓存实现(如 Redis、EhCache 等)。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-cache</artifactId>
      </dependency>
复制代码
### 4.10 spring-boot-starter-actuator

* 提供监控和管理功能,支持健康检查、指标、日志等功能。

*

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>

5. 内嵌服务器与项目打包

复制代码
### **5.1 内嵌服务器**

* Spring Boot 支持多种内嵌服务器,默认情况下使用 **Tomcat** ,但也可以选择其他服务器,如 **Jetty** 或 **Undertow**。

*

  #### 5.1.1 默认内嵌 Tomcat

  * Spring Boot 默认使用 Tomcat 作为内嵌 Web 服务器。只需要添加 `spring-boot-starter-web` 依赖,Spring Boot 会自动引入 Tomcat 相关的依赖,并启动嵌入式的 Tomcat 服务器。

  * 在默认情况下,Spring Boot 会使用 Tomcat 并将应用程序绑定到 `localhost:8080`。你可以通过修改 `application.properties` 或 `application.yml` 配置文件来调整服务器端口。

*

  #### 5.1.2 选择其他内嵌服务器

  * Jetty

    *

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-jetty</artifactId>
          </dependency>

  * Undertow

  *

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>

*

  #### 5.1.3 修改内嵌服务器的配置

  * 如果需要定制内嵌服务器的配置,可以通过 `application.properties` 或 `application.yml` 来修改。例如,修改 Tomcat 服务器的连接数或最大线程数:

  *

        server.tomcat.max-threads=200
复制代码
### **5.2 项目打包**

* Spring Boot 支持将项目打包成 JAR 文件或 WAR 文件,方便部署。默认情况下,Spring Boot 会将项目打包成一个 **可执行 JAR 文件**,可以直接通过命令行启动。

*

  #### 5.2.1 JAR 包打包

  * pom.xml

    *

          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>

  * 执行打包

*

  #### 5.2.2 WAR包打包

  * 如果你希望将应用打包为 WAR 文件(比如为了部署到外部 Tomcat 等容器中),需要在 `pom.xml` 中进行一些配置调整,并实现 `SpringBootServletInitializer` 类。

  * pom.xml

    *

          <packaging>war</packaging>

          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
          </dependencies>

  * 启动类

    *

          @SpringBootApplication
          public class MyApplication extends SpringBootServletInitializer {

              public static void main(String[] args) {
                  SpringApplication.run(MyApplication.class, args);
              }

              @Override
              protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
                  return builder.sources(MyApplication.class);
              }
          }
相关推荐
xyliiiiiL14 分钟前
一文总结常见项目排查
java·服务器·数据库
shaoing16 分钟前
MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
java·开发语言·数据库
腥臭腐朽的日子熠熠生辉1 小时前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian1 小时前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之1 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码2 小时前
Spring Task 定时任务
java·前端·spring
俏布斯2 小时前
算法日常记录
java·算法·leetcode
27669582922 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息2 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
程序猿chen2 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算