十五: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);
              }
          }
相关推荐
禁默1 分钟前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Cachel wood8 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Code哈哈笑11 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
gb421528713 分钟前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶14 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
zfoo-framework22 分钟前
【jenkins插件】
java
风_流沙27 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
ProtonBase1 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
乐之者v1 小时前
leetCode43.字符串相乘
java·数据结构·算法