1. 初识SpringBoot

1.1 SpringBoot是什么

SpringBoot 可以理解为脚手架,以约定大于配置的核心思想,把一些复杂繁杂的配置工作简化起来,糅合在一块,我需要引入什么第三方组件,可以用 SpringBoot 代替,而不再需要 SSM 组装多配置的那种方式。SpringBoot 应用这些第三方库几乎可以零配置的开箱即用。

SpringBoot 的优点

  • 开箱即用,提供各种默认配置;
  • Spring Boot 可以选择内嵌 Tomcat、jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。
  • Spring boot 可以以 jar 包形式独立运行,运行一个 Spring Boot 项目只需要通过 java -jar xx.jar 来运行。
  • 没有冗杂代码配置,可以通过 Java 代码的方式实现一些配置类。

    1.2 快速入门

    1、使用 IDEA,创建 spring initalizr 项目;
    2、配置 pom.xml,msyql.version 为 5.1.47; ```xml org.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE

com.xuwei

springboot

0.0.1-SNAPSHOT

springboot

springboot基本语法 14 5.1.47 org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true mysql mysql-connector-java runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine

org.springframework.boot spring-boot-maven-plugin

  1. 3、在主程序目录下,新建一个 controller 包;<br />4、在包中新建一个 HelloController 类;
  2. ```java
  3. @RestController
  4. public class HelloController {
  5. @RequestMapping("/hello")
  6. public String hello() {
  7. return "hello world";
  8. }
  9. }

5、从主程序启动项目,浏览器发起请求,看页面返回;
image.png
6、将项目打成 jar 包,双击 maven 中的 package,会在 target 目录中生成一个对应的 jar 包。
image.png image.png

1.3 Spring Boot Starter

Spring Boot Starter 相当于一个依赖的集合,会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦。

1.4 Spring Boot 支持哪些内嵌 Servlet 容器?

Spring Boot 支持的嵌入式 servlet 容器有: Tomcat、Jetty、Undertow。

1.5 如何在 Spring Boot 应用程序中使用 Jetty 而不是 Tomcat?

排除 Tomcat 依赖项并改为包含 Jetty 或 Undertow:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-tomcat</artifactId>
  8. </exclusion>
  9. </exclusions>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-jetty</artifactId>
  14. </dependency>

2. yaml配置

2.1 yaml是什么

yaml 不是一种标记语言,而是以数据为中心。
SpringBoot 使用一个全局的配置文件,配置文件的名称是固定的:application.properties 或 application.yml,在配置文件中,主要是用来修改 SpringBoot 自动配置的默认值。

2.2 yaml语法

  1. person:
  2. # name: weishao
  3. # age: 3
  4. # 下面用的占位符生成随机值
  5. name: weishao${random.uuid} #随机uuid
  6. age: ${random.int} #随机int
  7. happy: false
  8. birth: 1998/04/16
  9. maps: {k1: v1, k2: v2}
  10. lists: [code, girl, music]
  11. dog: {name: 旺财, age: 1}
  12. # 数组、list、set 两种写法
  13. pets: [cat,dog,pig]
  14. pets:
  15. - cat
  16. - dog
  17. - pig

2.3 读取配置信息

很多时候我们需要将一些常用的配置信息比如阿里云 oss、发送短信、微信认证的相关配置信息等等放到配置文件 application.yml 中,并且我们会在 Java 代码中读取一些配置信息,我们会经常使用以下注解:
@Value:读取比较简单的配置信息,将配置文件中的属性值映射到实体类上的属性上。
@configurationProperties:读取配置信息并与 bean 绑定,你可以像使用普通的 Spring bean 一样,将其注入到类中使用。
@PropertySource :读取指定 properties 文件。

2.4 多环境切换

1、通过一个配置来选择需要激活的环境;

  1. server:
  2. port:8080
  3. #选择要激活哪个环境
  4. spring:
  5. profiles:
  6. active: dev #开发环境

2、新建 yaml 配置文件,表示一个新的环境;

  1. server:
  2. port: 8081
  3. spring:
  4. profiles: dev #配置环境的名称

3、注意,如果 yml 和 properties 同时都配置了端口,并且没有激活其他环境 ,默认会使用 properties 配置文件的!

配置文件加载位置

springboot 启动会扫描以下位置的 application.properties 或者 application.yml 文件作为 Spring boot 的默认配置文件:

  • 优先级1:项目路径下的 config 文件夹配置文件;
  • 优先级2:项目路径下配置文件;
  • 优先级3:资源路径下的 config 文件夹配置文件;
  • 优先级4:资源路径下配置文件;

优先级由高到底,高优先级的配置会覆盖低优先级的配置;


3. 参数校验

SpringBoot 数据校验


4. SpringBoot部署

  1. 添加项目的 pom.xml 插件,在 pom.xml 要显式的加入插件 spring-boot-maven-plugin,如果创建的是 SpringBoot 项目,默认就有。
  2. 点击右侧 maven 中的 install ,而后点击 package,即可在 target 目录中找到打包成功的 jar 文件。
  3. 使用命令:java -jar heima-springboot-1.0-SNAPSHOT.jar 运行该 jar 文件。

如果在部署中出现错误:springboot2-1.0-SNAPSHOT.jar 中没有主清单属性,则需要在 plugin 便签内添加如下代码:

  1. <executions>
  2. <execution>
  3. <goals>
  4. <goal>repackage</goal>
  5. </goals>
  6. </execution>
  7. </executions>