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; ```xmlorg.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE
3、在主程序目录下,新建一个 controller 包;<br />4、在包中新建一个 HelloController 类;
```java
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello world";
}
}
5、从主程序启动项目,浏览器发起请求,看页面返回;
6、将项目打成 jar 包,双击 maven 中的 package,会在 target 目录中生成一个对应的 jar 包。
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:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
2. yaml配置
2.1 yaml是什么
yaml 不是一种标记语言,而是以数据为中心。
SpringBoot 使用一个全局的配置文件,配置文件的名称是固定的:application.properties 或 application.yml,在配置文件中,主要是用来修改 SpringBoot 自动配置的默认值。
2.2 yaml语法
person:
# name: weishao
# age: 3
# 下面用的占位符生成随机值
name: weishao${random.uuid} #随机uuid
age: ${random.int} #随机int
happy: false
birth: 1998/04/16
maps: {k1: v1, k2: v2}
lists: [code, girl, music]
dog: {name: 旺财, age: 1}
# 数组、list、set 两种写法
pets: [cat,dog,pig]
pets:
- cat
- dog
- pig
2.3 读取配置信息
很多时候我们需要将一些常用的配置信息比如阿里云 oss、发送短信、微信认证的相关配置信息等等放到配置文件 application.yml 中,并且我们会在 Java 代码中读取一些配置信息,我们会经常使用以下注解:
@Value:读取比较简单的配置信息,将配置文件中的属性值映射到实体类上的属性上。
@configurationProperties:读取配置信息并与 bean 绑定,你可以像使用普通的 Spring bean 一样,将其注入到类中使用。
@PropertySource :读取指定 properties 文件。
2.4 多环境切换
1、通过一个配置来选择需要激活的环境;
server:
port:8080
#选择要激活哪个环境
spring:
profiles:
active: dev #开发环境
2、新建 yaml 配置文件,表示一个新的环境;
server:
port: 8081
spring:
profiles: dev #配置环境的名称
3、注意,如果 yml 和 properties 同时都配置了端口,并且没有激活其他环境 ,默认会使用 properties 配置文件的!
配置文件加载位置
springboot 启动会扫描以下位置的 application.properties 或者 application.yml 文件作为 Spring boot 的默认配置文件:
- 优先级1:项目路径下的 config 文件夹配置文件;
- 优先级2:项目路径下配置文件;
- 优先级3:资源路径下的 config 文件夹配置文件;
- 优先级4:资源路径下配置文件;
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
3. 参数校验
4. SpringBoot部署
- 添加项目的 pom.xml 插件,在 pom.xml 要显式的加入插件 spring-boot-maven-plugin,如果创建的是 SpringBoot 项目,默认就有。
- 点击右侧 maven 中的 install ,而后点击 package,即可在 target 目录中找到打包成功的 jar 文件。
- 使用命令:
java -jar heima-springboot-1.0-SNAPSHOT.jar
运行该 jar 文件。
如果在部署中出现错误:springboot2-1.0-SNAPSHOT.jar 中没有主清单属性,则需要在 plugin 便签内添加如下代码:
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>