SpringBoot

SpringBoot入门

特性

  1. 快速创建独立的Spring应用
  2. 直接嵌入Tomcat
  3. 重点:提供可选的starter,简化应用整合
  4. 重点:按需自动配置Spring以及第三方库
  5. 提供生产级特性:监控指标,健康检查,外部化配置
  6. 无代码生成,无xml

总结:简化开发,简化配置,简化整合,简化部署,简化监控,简化运维

创建示例

  1. 创建一个空项目

  2. 创建一个module,选择MAVEN

  3. 设置POM文件

    继承springboot父项目,并引入web相关模块

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.nuyoah</groupId>
    <artifactId>demo-01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--所有springboot项目都必须继承与 spring-boot-starter-parent-->
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.4</version>
    </parent>


    <dependencies>
    <!--web开发的场景启动器-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>

    <!--Springboot官方打包文件-->
    <!-- 使用 mvn clean package 进行打包 -->
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    </project>
  4. 设置主启动类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package com.nuyoah;


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


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

SpringBoot打包好的文件,可以外放配置,如果jar包同级目录下有 配置文件,默认通过外部配置文件启动

SpringBoot配置文件选项

应用分析

依赖管理机制

思考

  1. 为什么通过导入starter-web这个依赖,就可以将所相关依赖全部导入?

    • 通过导入指定的开发场景启动器,导入所有相关依赖包
    • maven拥有依赖传递原则,如果A依赖于B,B依赖于C,则导入A就会通过拥有B和C
    • 通过导入特定的场景启动器,场景启动器中依赖的一些包,也会同时导进来
  2. 为什么导入场景启动器的时候不用写版本号

    • 因为我们导入了父级项目 spring-boot-starter-parent

    • spring-boot-starter-parent也有父级项目spring-boot-dependencies

    • spring-boot-dependencies中拥有版本的控制,将比较常见的版本都写好了

    • 也可以自定义配置版本号,Maven就近原则

      在pom文件中定义properties定义指定的版本号

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>

      <groupId>com.nuyoah</groupId>
      <artifactId>demo-01</artifactId>
      <version>1.0-SNAPSHOT</version>

      <!--所有springboot项目都必须继承与 spring-boot-starter-parent-->
      <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>3.3.4</version>
      </parent>
      <properties>
      <mysql.version>8.0.32</mysql.version>
      </properties>


      <dependencies>
      <!--web开发的场景启动器-->
      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
      </dependency>
      </dependencies>

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

image-20240926231832675

自动配置机制