SpringBoot概念、创建和运行
1.什么是SpringBoot?为什么学习SpringBoot?
Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。
2.Spring Boot优点
- 快速集成框架【提供启动添加依赖的功能】
- 内容运行容器【无需配置Tomcat等Web容器,直接运行和部署程序】
- 快速部署项目【无需外部容器即可启动并运行项目】
- 完全抛弃繁琐的XML【使用注解和配置的方式开发】
- 支持更多的监控指标【更好的了解项目的运行情况】
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yMSDElZu-1676077243545)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669808657901.png)]](https://img-blog.csdnimg.cn/e89455d20b494c7da20a7f23046a7f00.png)
3.创建一个Spring Boot程序
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAq7hcJI-1676077243547)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811250185.png)]](https://img-blog.csdnimg.cn/2d239deedd2d4c0e9352ea5acea415b2.png)
创建UserController类
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U2TSpVLs-1676077243549)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811260814.png)]](https://img-blog.csdnimg.cn/3cb7016ec331486796983081ad2c35a9.png)
启动程序
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3N75dnN-1676077243550)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811277174.png)]](https://img-blog.csdnimg.cn/5fdf2239cdb24434b187524e2b034c84.png)
打开浏览器检查
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8yWdHFW-1676077243551)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811299483.png)]](https://img-blog.csdnimg.cn/bc2df542709f4cd3921ca1896aced0d1.png)
Spring Boot 约定
- 需要将对象托管到SpringBoot(Spring)的对象,必须要放在SpringBoot启动类的根路径或者是子路径中,否则不能被框架识别。
- SpringBoot配置比较少,但是SpringBoot的设计思路:约定大于配置
Spring Boot 配置文件
1.配置文件的作用
保存整个项目中所有的数据。
- 数据库的连接信息
- 项目的启动端口
- 第三方系统的调用密钥等信息
- 用于发现和定位问题的普通日志和异常日志
2.配置文件的格式
Spring Boot配置文件主要分为以下两种格式:
- .properties
- .yml
规则:
- 一个项目中可以存在下面两种配置文件,但不建议。
- 当一个项目中出现两种配置文件,配置项会以properties为主。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8S89F8BN-1676077243552)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669813805523.png)]](https://img-blog.csdnimg.cn/6531b03676c74a87a28532f4bc729ed0.png)
配置文件基本语法:
key=value
3.读取配置文件
读取配置文件使用@Value注解
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhoXxVn2-1676077243552)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669819594371.png)]](https://img-blog.csdnimg.cn/f0151661eaf24b85960060499628e03b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9SuZEcBV-1676077243553)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669819497029.png)]](https://img-blog.csdnimg.cn/d55da07cca3441b78709686ab0b50f63.png)
运行结果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2DtFFVvD-1676077243554)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669819627896.png)]](https://img-blog.csdnimg.cn/cc74b69fdefc49c98e1496bc9c1a97f9.png)
4.yml配置文件说明
yml:另一种标记语言。
yml特点:
- 写法简单,可读性高
- 支持更多的数据类型
- 跨语言使用:Java/Golong/高版本 python
yml语法:
key: value
yml连接数据库 vs properties连接数据库

yml对象配置和读取


SpringBoot有几种读取配置文件的方法?
- 使用@Value读取
- 使用@ConfigurationProperties读取
- 使用Environment读取【基本不用】
- 使用@PropertySource读取
- 中文乱码
- 使用原生方式读取【基本不用】
SpringBoot日志文件
日志除了 发现和定位问题,还能实现以下功能:
- 记录用户登录日志,方便分析用户是正常登录还是恶意破解用户
- 记录系统的操作日志,方便数据恢复和定位操作人
- 记录程序的执行时间,方便为以后优化抄袭提供数据
- 等等。
自定义日志的打印
- 在一个类中先获取到日志打印对象(日志框架提供日志对象,而日志框架默认已经集成到SpringBoot里)
- 使用 日志对象提供的方法实现日志的打印

package com.example.springbbootlog.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author SunYuHang
* @date 2022-12-03 17:34
* @ClassName : UserController //类名
*/
@Controller
@ResponseBody
public class UserController {
//1.先得到日志对象
private final static Logger log = LoggerFactory.getLogger(UserController.class);//设置当前类的类型
@RequestMapping("/sayHi")
public void sayHi(){
//2.使用日志提供的打印方法进行日志打印
log.trace("我是 trace");
log.debug("我是 debug");
log.info("我是 info");
log.warn("我是 warn");
log.error("我是 error");
}
}

日志的格式说明

日志级别
- trace: 少许的日志(级别最低)
- debug:调试日志
- info:普通信息日志 (默认日志级别)
- warn:警告日志
- error:错误日志
- fatal:致命的日志(不支持控制台打印)
- 级别从低到高
设置全局日志级别
# 设置全局的日志级别
logging.level.root=trace

设置局部文件夹的日志级别
# 设置局部文件夹的日志级别
logging.level.com.example.springbbootlog.controller=trace
当存在局部日志级别和全局日志级别设置时,那么当访问局部日志级别时,使用的是局部日志级别。
也就是说 局部日志级别优先级 > 全局的日志级别
日志持久化
让日志永久保存到磁盘的某个位置
- 在配置文件中设置日志的保存路径,当设置了保存路径之后,那么日志就会自动的进行持久化。
- 在配置文件中设置日志保存的文件名,日志会自动进行持久化
实现一:
设置日志的保存路径

设置日志的保存名称
# 设置日志的保存名称
logging.file.name=D:\\log\\springboot.log

日志默认情况是追加的。
更简单的实现自定义日志的打印——lombok
每次都使用 LoggerFactory.getLogger(xxx.class) 很繁琐,而且每个类都要添加一遍,也很麻烦,这里有种更好的日志输出方式,使用 lombok 来更简单的输出。
- 添加 lombok 框架支持
- 使用 @slf4j 注解输出日志


SpringBoot单元测试
1. 什么是单元测试?
单元测试是开发者编写的⼀⼩段代码,⽤于检验被测代码的⼀个很⼩的、很明确的(代码)功能是否正
确。 执⾏单元测试就是为了证明某段代码的执⾏结果是否符合我们的预期。如果测试结果符合我们的预
期,称之为测试通过,否则就是测试未通过(或者叫测试失败)。
2. 单元测试的好处?
- 可以非常简单、直观、快速的测试某一个功能是否正确【单元测试不需要自己启用 tomcat】;
- 使用单元测试可以帮我们在打包的时候,发现一些问题,因为在打包之前,所有的单元测试必须通过,否则不能打包成功;
- 使用单元测试,在测试功能的时候,不会污染本地数据库【事务回滚】
3. SpringBoot单元测试使用
单元测试的实现:
- 确认内置单元测试框架
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 生产单元测试类


- 配置单元测试的类添加 @SpringBootTest 注解,添加单元测试的业务代码。




















