当前位置: 首页 > news >正文

SpringBoot笔记【JavaEE】

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)]

3.创建一个Spring Boot程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAq7hcJI-1676077243547)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811250185.png)]

创建UserController类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U2TSpVLs-1676077243549)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811260814.png)]

启动程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3N75dnN-1676077243550)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811277174.png)]

打开浏览器检查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8yWdHFW-1676077243551)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669811299483.png)]

Spring Boot 约定

  1. 需要将对象托管到SpringBoot(Spring)的对象,必须要放在SpringBoot启动类的根路径或者是子路径中,否则不能被框架识别。
  2. SpringBoot配置比较少,但是SpringBoot的设计思路:约定大于配置

Spring Boot 配置文件

1.配置文件的作用

保存整个项目中所有的数据。

  • 数据库的连接信息
  • 项目的启动端口
  • 第三方系统的调用密钥等信息
  • 用于发现和定位问题的普通日志和异常日志

2.配置文件的格式

Spring Boot配置文件主要分为以下两种格式:

  • .properties
  • .yml

规则:

  1. 一个项目中可以存在下面两种配置文件,但不建议。
  2. 当一个项目中出现两种配置文件,配置项会以properties为主。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8S89F8BN-1676077243552)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669813805523.png)]

配置文件基本语法:

key=value

3.读取配置文件

读取配置文件使用@Value注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhoXxVn2-1676077243552)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669819594371.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9SuZEcBV-1676077243553)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669819497029.png)]
运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2DtFFVvD-1676077243554)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1669819627896.png)]

4.yml配置文件说明

yml:另一种标记语言。

yml特点:

  1. 写法简单,可读性高
  2. 支持更多的数据类型
  3. 跨语言使用:Java/Golong/高版本 python

yml语法:

key: value

yml连接数据库 vs properties连接数据库

在这里插入图片描述

yml对象配置和读取

在这里插入图片描述

在这里插入图片描述

SpringBoot有几种读取配置文件的方法?

  1. 使用@Value读取
  2. 使用@ConfigurationProperties读取
  3. 使用Environment读取【基本不用】
  4. 使用@PropertySource读取
    • 中文乱码
  5. 使用原生方式读取【基本不用】

SpringBoot日志文件

日志除了 发现和定位问题,还能实现以下功能:

  • 记录用户登录日志,方便分析用户是正常登录还是恶意破解用户
  • 记录系统的操作日志,方便数据恢复和定位操作人
  • 记录程序的执行时间,方便为以后优化抄袭提供数据
  • 等等。

自定义日志的打印

  1. 在一个类中先获取到日志打印对象(日志框架提供日志对象,而日志框架默认已经集成到SpringBoot里)
  2. 使用 日志对象提供的方法实现日志的打印

在这里插入图片描述

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");}}

在这里插入图片描述

日志的格式说明

在这里插入图片描述

日志级别

  1. trace: 少许的日志(级别最低)
  2. debug:调试日志
  3. info:普通信息日志 (默认日志级别)
  4. warn:警告日志
  5. error:错误日志
  6. fatal:致命的日志(不支持控制台打印)
    • 级别从低到高

设置全局日志级别

# 设置全局的日志级别
logging.level.root=trace

在这里插入图片描述

设置局部文件夹的日志级别

# 设置局部文件夹的日志级别
logging.level.com.example.springbbootlog.controller=trace

当存在局部日志级别和全局日志级别设置时,那么当访问局部日志级别时,使用的是局部日志级别。

也就是说 局部日志级别优先级 > 全局的日志级别

日志持久化

让日志永久保存到磁盘的某个位置

  1. 在配置文件中设置日志的保存路径,当设置了保存路径之后,那么日志就会自动的进行持久化。
  2. 在配置文件中设置日志保存的文件名,日志会自动进行持久化

实现一:

设置日志的保存路径

在这里插入图片描述

设置日志的保存名称

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

在这里插入图片描述

日志默认情况是追加的。

更简单的实现自定义日志的打印——lombok

每次都使用 LoggerFactory.getLogger(xxx.class) 很繁琐,而且每个类都要添加一遍,也很麻烦,这里有种更好的日志输出方式,使用 lombok 来更简单的输出。

  1. 添加 lombok 框架支持
  2. 使用 @slf4j 注解输出日志

在这里插入图片描述

在这里插入图片描述

SpringBoot单元测试

1. 什么是单元测试?

单元测试是开发者编写的⼀⼩段代码,⽤于检验被测代码的⼀个很⼩的、很明确的(代码)功能是否正
确。 执⾏单元测试就是为了证明某段代码的执⾏结果是否符合我们的预期。如果测试结果符合我们的预
期,称之为测试通过,否则就是测试未通过(或者叫测试失败)。

2. 单元测试的好处?

  1. 可以非常简单、直观、快速的测试某一个功能是否正确【单元测试不需要自己启用 tomcat】;
  2. 使用单元测试可以帮我们在打包的时候,发现一些问题,因为在打包之前,所有的单元测试必须通过,否则不能打包成功;
  3. 使用单元测试,在测试功能的时候,不会污染本地数据库【事务回滚】

3. SpringBoot单元测试使用

单元测试的实现:

  1. 确认内置单元测试框架
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
  1. 生产单元测试类

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/2415.html

相关文章:

  • 目标检测算法之voxelNet与pointpillars对比
  • 电脑里的连接速度双工模式是什么?怎么设置
  • springboot整合单机缓存ehcache
  • 在阿里干了2年的测试,总结出来的划水经验
  • 硬盘分类及挂载硬盘知识补充和介绍
  • 【MyBatis】自定义映射resultMap
  • mysql的锁和事务
  • 为什么B站中的弹幕可以不遮挡人物
  • 数据结构 第八章 查找(静态查找表)
  • 【Python基础】数据类型(元组、列表)
  • 你了解互联网APP搜索和推荐的背后逻辑么?
  • Bug的级别,按照什么划分
  • 微服务项目简介
  • SLAM中坐标轴旋转及ros的接口解释
  • 文件管理(9)
  • PyTorch学习笔记:nn.TripletMarginLoss——三元组损失
  • 冒泡排序详解
  • git极快上手指南超级精简版
  • 蓝桥杯-最长公共子序列(线性dp)
  • GO的并发模式Context
  • 《Redis实战篇》六、秒杀优化
  • 《C++ Primer Plus》第16章:string类和标准模板库(11)
  • 声明和定义
  • Python获取最小路径,查找元素在list中的坐标
  • 数据采集协同架构,集成马扎克、西门子、海德汉、广数、凯恩帝、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科、华中各类数控以及各类PLC数据采集软件
  • Allegro172版本如何用自带的功能实现快速在1MMBGA下方等距放置电容
  • 一种简单的统计pytorch模型参数量的方法
  • 【PyTorch】教程:对抗学习实例生成
  • 中国区使用Open AI账号试用Chat GPT指南
  • STM32开发(9)----CubeMX配置外部中断