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

Spring Boot的创建和使用(JavaEE进阶系列2)

目录

前言:

1.什么是Spring Boot?为什么要学习Spring Boot?

2.Spring Boot优点

3.创建Spring Boot项目

3.1准备工作

3.2Spring Boot创建

3.2.1通过idea的方式创建

3.2.2通过网页创建

4.Spring Boot中的配置文件

4.1Spring Boot配置文件的作用

4.2配置文件的格式

4.3 properties VS yml

5.Spring Boot日志文件

5.1日志的作用

5.2日志的用法

5.3自定义日志

4.日志级别

4.1日志级别的作用

4.2日志级别的分类与使用

4.3 日志持久化

4.4更加简单的日志输出--lombok

结束语:


前言:

在上一小节的JavaEE的进阶知识中小编主要是与大家分享了什么是IoC容器,以及依赖注入的五大注解和Bean的使用。那么接下来这一小节中小编将与大家分享一下有关于Spring Boot项目的创建以及使用。

1.什么是Spring Boot?为什么要学习Spring Boot?

Spring 的诞生就是为了简化Java程序的开发,而Spring Boot的诞生是为了简化Spring程序的开发。Spring Boot翻译一下就是Spring手脚架的意思,在盖房子的时候就会使用手脚架来提高盖房子的效率。而Spring Boot就是Spring框架的手脚架,他就是为了快速开发Spring框架诞生的。

2.Spring Boot优点

  • 起步依赖(创建的时候可以方便的添加依赖)。
  • 内置Tomcat容器。无须配置Tomcat等Web容器,直接运行和部署程序。
  • 快速部署,使用jar包加上简单的命令直接运行。
  • 抛弃XML的配置方式,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况。

3.创建Spring Boot项目

3.1准备工作

在idea中安装插件:

3.2Spring Boot创建

3.2.1通过idea的方式创建

①选择Spring Boot的工程项目进行创建。

②选择下面的选项,点击next。③选择要添加的插件。

④确定存放路径,点击完成进行创建。

⑤创建好之后删除一些无用的目录。

⑥在pom.xml中删除以下后缀内容,并点击侧边的maven进行刷新。

⑦点击主启动类进行启动项目,验证项目创建是否正确。

Spring Boot目录工程详解:

快速添加依赖的方法:
①安装插件。

 

②右键点击Generator,点击Edit Starters,然后寻找你想要的插件。

③点击maven的刷新按钮,进行刷新。

配置文件中的配置类型分类:

  • 系统配置项 ex:server.port,它是给系统(框架)使用的。
  • 用户自定义配置ex:myimage.path开发者自己使用。

idea热部署(写完代码不用手动重新启动,新代码可以自动生效)

①添加springboot-dev-tool框架。

②在idea设置中开启项目的自动编译。


 

3.2.2通过网页创建

 我们也可以通过Spring的网页版来创建一个我们想要的项目。网址☞https://start.spring.io/

4.Spring Boot中的配置文件

4.1Spring Boot配置文件的作用

整个项目中所有的数据都是在配置文件中配置的,比如:

  • 数据的连接信息(包含用户名和密码的设置)。
  • 项目的启动端口。
  • 第三方系统的调用密钥等信息。
  • 用于发现和定位问题的普通日志和异常日志等。

想象一下如果没有配置信息,那么Spring Boot项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是非常重要的。

4.2配置文件的格式

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

  • .properties
  • .yml

具体的写法请看下面。

properies配置文件:

他是最早期的配置文件格式,也是创建Spring Boot项目默认的配置文件。

properies配置文件的优缺点:

  • 优点:配置文件结构清晰:key=value->适合初学者。
  • 缺点:写法比较臃肿。

 在yml中的MySQL的配置:

yml优点:

  • yml是一个可读性高,写法简单,易于理解,它的语法和JSON语言类似。
  • yml支持更多的数据类型。
  • yml支持更多的编程语言,它不止是Java中可以使用也可以在其他语言中使用。 

注意:在书写的时候中间需要有一个空格!!!

特殊说明:

  • 理论上properties可以和yml一起存在于一个项目当中,当properties和yml一起存一个项目中时,如果配置文件出现了同样的配置,比如properties和yml中都配置了“server.port”,那么这个时候会以properties中的配置为主,也就是.properties配置文件的优先级最高,但加载完.properties文件之后,也会加载.yml文件的配置信息。
  • 虽然理论上来讲.properties可以和.yml文件共存,但实际上的业务当中,我们通常会采取一种同一的配置文件格式,这样可以更好的维护(降低故障率)。

4.3 properties VS yml

  • properties是以key=value的形式配置的键值类型的配置文件,而yml使用的是类似JSON格式的树形配置方式进行配置的,yml层级之间使用换行缩进的方式配置,key和value之间使用“:”英文冒号加空格的方式设置,并且空格不可以省略。
  • properties为早期并默认的配置文件格式,但其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。
  • yml通用性更好,支持跟多语言,如Java、Go、Python等,如果是云服务器开发,可以使用一份配置文件作为Java和Go的共同配置文件。
  • yml支持更多的数据类型。

5.Spring Boot日志文件

5.1日志的作用

日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的信息吗?答案当然是否定的。因此日志对于我们来说最重要的用途就是排除和定位问题。

除了发现和定位问题之外,我们还可以通过日志实现以下功能:

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

5.2日志的用法

Spring Boot项目在启动的时候默认就有日志的输出,如下所示:

以上内容就是Spring Boot输出的控制台日志信息。

Spring Boot默认打印日志格式说明:

通过上述日志信息我们能发现以下三个问题:

  • Spring Boot内置了日志框架。
  • 默认情况下输出的日志并非是开发者定义和打印的,那么开发者又该怎么打印呢?
  • 日志默认是打印在控制台上的,而控制台的日志不是不能被保存的,那么怎么把日志永久的保存下来呢?

下面我们来带着问题一起探讨一下吧!

5.3自定义日志

开发者自定义打印日志的实现步骤:

  1. 通过日志工程得到日志对象。
  2. 通过日志对象提供的打印方法实现打印。

①得到日志对象。

②使用日志对象提供API打印日志。

代码展示:

package com.example.demo.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class LogController {//1.得到日志对象private static Logger log = LoggerFactory.getLogger(LogController.class);//2.使用日志对象提供的API打印日志@RequestMapping("/log")public void log() {String msg = "我是Spring Boot的日志";log.trace("trace —> " + msg);log.debug("debug —> " + msg);log.info("info —> " + msg);log.warn("warn —> " + msg);log.error("error —> " + msg);}
}

4.日志级别

4.1日志级别的作用

  • 日志级别可以帮助你筛选出重要的信息,比如设置日志级别为error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务就可以忽略了,从而节省开发者信息筛选的时间。
  • 日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保证性能和安全性就会输入尽量少的日志,而通过日志的级别就可以实现此需求。

4.2日志级别的分类与使用

日志的级别分为:

  • trace:微量,少许的意思,级别最低。
  • debug:需要调试时候的关键信息打印。
  • info:普通的打印信息(默认日志级别)。
  • warn:警告,不影响使用,但需要注意的问题;
  • error:错误信息,级别较高的错误日志信息;
  • fatal:致命的,因为代码异常导致程序退出执行的事件。

日志的级别顺序:

越往上接收到的消息就越少,如设置了warn就只能收到warn、error、fatal级别的日志。

那么为什么Spring Boot可以打印日志,并设置日志级别?因为在Spring Boot中内置了两个日志框架:SLF4J+LogBack。

给某个文件夹单独设置日志级别:

4.3 日志持久化

日志持久化就是将日志保存到磁盘中,以上我们输出的日志都是在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程就叫做持久化。

想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件之后Spring Boot就会将控制台的日志写到相应的目录或文件下。

①设置日志保存路径。

②设置日志保存文件名。

4.4更加简单的日志输出--lombok

每次都使用LoggerFactory.getLogger(xxx.class)都很繁琐,而且每一个类我们都需要添加一次,所以这里我们使用Lombok来更加简单的输出。

①添加lombok框架支持。

②使用@slf4j注解输出日志。

Lombok的实现原理:
Lombok在编译时期(.java --> .class) 代码的时候将Lombok的注解,转换成对应的代码。

结束语:

好了这节小编就给大分享到这里啦,希望这节对大家有关于Spring Boot的基础知识的了解有一定帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)

相关文章:

Spring Boot的创建和使用(JavaEE进阶系列2)

目录 前言: 1.什么是Spring Boot?为什么要学习Spring Boot? 2.Spring Boot优点 3.创建Spring Boot项目 3.1准备工作 3.2Spring Boot创建 3.2.1通过idea的方式创建 3.2.2通过网页创建 4.Spring Boot中的配置文件 4.1Spring Boot配置…...

【OLSR路由协议】链路状态路由(OLSR)协议中选择多点中继节点算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

双重差分模型(DID)论文写作指南与操作手册

手册链接:双重差分模型(DID)论文写作指南与操作手册https://www.cctalk.com/m/group/90983583?xh_fshareuid60953990 简介: 当前,对于准应届生们来说,毕设季叠加就业季,写作时间显得十分宝贵…...

ping 的工作原理

ping 是一个常用于网络诊断的命令行工具,用于测试两台计算机之间的网络连通性。它的工作原理如下: 发出 ICMP Echo 请求: 当你在终端中运行 ping 命令并指定目标主机的IP地址或域名时,计算机会创建一个特殊的ICMP(In…...

93. 复原 IP 地址

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.24…...

竞赛选题 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…...

第15届蓝桥STEMA测评真题剖析-2023年8月20日Scratch编程中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第155讲。 第15届蓝桥第1次STEMA测评,这是2023年8月20日举办的STEMA,比赛仍然采取线上形式。这…...

html5 checkbox

1 选中状态的设置与获取 (1)获取checkbox是否选中: $("#checkbox").is(":checked");$("#checkbox-id")get(0).checked$(#checkbox-id).attr(checked)(2)设置checkbox是否选中 $("…...

安装matplotlib_

安装pip 安装matplotlib 安装完毕 导入出现bug.........

STM32复习笔记(六):STM32远程升级BootLoader相关

目录 Preface: (一)STM32上电启动流程 (二)BootLoader相关 (三)Clion配置 Preface: 有关STM32的BootLoader主要还是参考了许多大佬的文章,这里只是简单地列举一下&am…...

MASA MAUI iOS 文件下载与断点续传

文章目录 背景介绍方案及代码1、新建MAUI项目2、建立NSUrlSession会话连接3、使用NSUrlSessionDownloadTask 创建下载任务4、DidWriteData 监听下载5、DidFinishDownloading 完成下载6、CancelDownload (取消/暂停)下载7、ResumeDownload 恢复下载8、杀死进程-恢复下载 效果图总…...

NPDP产品经理知识(产品创新流程)

1.复习组合管理: 组合管理的目标 > 价值最大化,项目平衡,战略一致,管道平衡(资源需求和供给),盈利充分 (实现财务目标) 产品创新流程就是管理风险的过程。 模糊前端: 产品创新章程:PIC 包…...

Android日常——记一次Android事件分发需求的实现

背景:在一个事件分发复杂的view中,插入一个可点击的控件,且不能影响到本身的事件分发。 尝试: 1.对view本身设置点击事件;由于view整体是交由root view去处理分发,存在滑动、边界处理、调出其他界面等复杂操作。设置点…...

【Python】函数(function)和方法(method)的区别

这里先说结论,为了满足心急的小伙伴:method与function的最大区别就是参数有无进行绑定。 自定义类Test: 首先先来一个自定义类: class Test:def Func_normal(arg):print(Func_normal:,arg)staticmethoddef Func_static(arg):pri…...

linux入门---信号的理解

目录标题 如何理解计算机中的信号如何查看计算机中的信号初步了解信号的保存和发送如何向目标进程发送信号情景一:使用键盘发送信号情景二:系统调用发送信号情景三:硬件异常产生信号情景四:软件条件产生信号 核心转储信号的两个问…...

nn.Linear(d, num_units, bias=True)设置bias和不设置bias有什么区别?

nn.Linear(d, num_units, biasTrue)是PyTorch中定义的一个全连接线性层。其中,d是输入特征的数量,num_units是输出特征的数量,而bias参数决定是否在这个线性变换中添加一个偏置项。 设置biasTrue与biasFalse的区别如下: 数学表示…...

代码随想录 Day10 栈与队列 LeetCode T239 滑动窗口的最大值 T347 前K个高频元素

简要介绍一下单调队列和优先级队列的不同 元素顺序的处理:单调队列中,元素的顺序是单调的,也就是说,队列中的元素按照特定的单调性(递增或递减)排列。这种特性使得单调队列在处理一些问题时非常高效&#…...

vue/自定义指令

需求: 页面有个input元素,现在要鼠标光标聚焦在上面,让每个页面上的标签都可以聚焦光标,比如,从A页面跳转到B页面的时候,我们依然要聚焦。如果要一遍遍地操作dom就会很麻烦。 这个时候,为了方便…...

借用binlog2sql工具轻松解析MySQL的binlog文件,再现Oracle的闪回功能

借用binlog2sql工具轻松解析MySQL的binlog文件 简介依赖配置用户权限选项配置案例:误UPDATE表数据回滚binlog2sql VS mysqlbinlog 看腻文章了就来听听视频演示吧:https://www.bilibili.com/video/BV1Zj411k7VW/ 简介 binlog2sql是美团大众点评开源的一…...

一次解决Pytorch训练时损失和参数出现Nan或者inf的经历

目前在做实验,参考了一个新的网络架构之后发现训练时损失出现Nan,参数了出现了inf的情况,先说说我的排查经历。 首先肯定是打印损失,损失是最容易出现Nan的,有各种原因,网上也有很多解决办法,我…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...