Spring Boot 配置文件和日志

目录

配置文件格式

properties配置文件说明

1.properties基本语法

2.读取配置文件

3.properties缺点

yml配置文件说明

1.yml基本语法

2.配置不同数据类型

3.字符串特殊情况

4.配置对象

properties和yml对比

日志

日志的使用

日志级别

日志持久化

Lombok

Lombok原理解释


Spring中配置文件有很重要的地位,所有的总要数据都是在配置文件中配置的。

比如数据库的信息、项目使用的端口号、日志等等。

配置文件格式

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

.properties 和 .yml

  1. 当properties和yml一起存在一个项目中,并且出现了同样的配置,比如serve人.port这个配置,这个时候会以properties中的配置为主,也就是优先级高于.yml。但加载完properties后仍然会加载yml文件。
  2. 实际来说,并不会出现两种配置文件共存的情况,只出现一种配置文件有利于维护。

properties配置文件说明

properties是古老的配置文件,也是创建Spring Boot 项目默认的配置文件。

1.properties基本语法

properties是以键值对的形式来配置的,key和value之间以 = 连接。并且可以使用#来添加注释。

2.读取配置文件

在项目中想要主动读取配置文件的内容,可以使用@Value注释来实现。

使用  ${}  的格式读取,并且在Construct后面打印出来

3.properties缺点

properties是以key-value的形式配置的。

但是这样就会出现很多的冗余信息

这个时候我们就可以使用yml的配置文件了。

yml配置文件说明

yml是YAML的 缩写,全称是 Yet Another Markup Language 翻译成中文就是“另⼀种标记语言”。

1.yml基本语法

yml是树形结构的配置文件,它的基础语法是  key: value。注意key和value之间使用英文冒号加空格的方式组成的,其中的空格不能省略。

2.配置不同数据类型

yml配置读取的方式和properties相同,使用@Value注解即可。

3.字符串特殊情况

字符串默认不用加引号,但是加英文的单引号和双引号可以表示特殊的含义。

双引号不会转义字符串里面的特殊字符,特殊字符会作为本身想要表达的意思。

4.配置对象

我们还可以在yml中配置对象:

或者使用行内写法:        

这个时候就不能使用@Value来读取配置中的对象了,而是要使用ConfigurationProperties来读取:

要注意,从配置文件中获取到student对象,需要在相关的类中定义Getter和Setter方法。

properties和yml对比

  1. properties以key=value的方式配置,而yml使用类似于json格式的树形配置方法配置的。
  2. yml可以很好的解决数据冗余的问题
  3. yml通用型非常好,并且支持更多的数据类型

日志

在Spring Boot中,我们需要日志。

  • 记录错误日志和警告日志:比如排查错误、bug
  • 用户日志:可以记录用户登录日志,方便分析用户是正常登录还是恶意访问的用户
  • 系统日志:记录系统的操作日志,方便数据的恢复和定位操作人员
  • 程序执行日志:记录程序的执行时间

日志的使用

Spring Boot项目在启动的时候就默认有日志输出:

在程序中获取日志对象需要使用日志工厂LoggerFactory:

可以看到我们打印了五个日志,但是只显示出来了三个。这就要提到日志级别了。

日志级别

日志级别可以帮助我们实现不同环境下的日志打印需求,如开发环境我们就需要很详细的信息,而生产环境为了保证性能和安全就需要输入尽量少的日志。

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

Spring Boot默认的级别是info,日志级别比info高的才显示出来。越往上关于日志的消息就收到的越多。

并且我们可以设置日志级别,以yml配置文件为例:

此时全局的日志只有error级别的才会显示,所以之前的日志都没显示。自定义在TestController的日志更改为了trace级别,也就是只要比trace级别高的日志就会显示出来。

并且也可以用info来自定义日志内容。

日志持久化

以上的内容都是输出在控制台上,生产环境上我们需要将日志保存到本地或者数据库中。

想要将日志持久化保存,只需要在配置文件中指定日志的存储目录或者指定保存名称后,日志就会自动保存。也就是说不配置就不会保存,配置好了就默认保存。

Lombok

之前我们已经简单的介绍了Lombok,这次我们详细的说明一下。

首先是对日志的快捷添加,使用 @Slf4j 注释来快速添加日志工厂的元素。

使用这一个注解就可以代替之前的LoggerFactory.getLogger这样繁琐的操作了。

但是使用注解时,只能使用log对象才能输出,这是lombok提供的对象名。

Lombok原理解释

之前介绍过JVM,里面详细解释到:用户代码(.java)通过编译成字节码(.class)再通过JVM运行,Lombok直接介入到编码的过程,生成的字节码文件是被修改过的。

也就是说,拿到了Lombok修改过的.class文件,和用户自己添加的未经过简化的代码编译后是一致的。

基本注解:

  • @Getter 自动添加 getter 方法
  • @Setter 自动添加 setter 方法
  • @ToString 自动添加 toString 方法
  • @EqualsAndHashCode 自动添加 equals 和 hashCode 方法
  • @NoArgsConstructor 自动添加无参构造方法
  • @AllArgsConstructor 自动添加全属性构造方法,顺序按照属性的定义顺序
  • @NonNull 属性不能为 null
  • @RequiredArgsConstructor 自动添加必需属性的构造方法,final + @NonNull 的 属性为必需

组合注解:

  • @Data  作用为@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor

日志注解:

  • @Slf4j  添加一个名为log的日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/240948.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++大学教程(第九版)5.18进制表

目录 题目 代码 运行截图 题目 (进制表)编写一个程序要求打印一张表,内容是1~256范围内每个十进制数对应的二进制、八进制和十六进制形式。如果还不熟悉这些计数系统,可先阅读附录 D。提示:可以使用流操纵符dec、oct 和 hex来…

网络部署实战具体学习内容总结

网络部署实战具体学习内容总结 💻网络部署实战课程通常旨在教授学生如何规划、配置、维护和优化计算机网络。这些课程涵盖了广泛的主题,以确保学生具备网络部署和管理所需的技能。 网络部署实战课程具体学习内容👇 1️⃣网络架构设计及网络原…

ARM 1.12

norflash与nandflash的区别: 一、NAND flash和NOR flash的性能比较 1、NOR的读速度比NAND稍快一些。 2、NAND的写入速度比NOR快很多。 3、NAND的4ms擦除速度远比NOR的5s快。 4、大多数写入操作需要先进行擦除操作。 5、NAND的擦除单元更小,相应的擦除电…

yolo9000:Better, Faster, Stronger的目标检测网络

目录 一、回顾yolov1二、yolov2详细讲解2.1 Better部分创新点(1)Batch Normalization(批量归一化)(2)High Resolution Classifier---高分辨率分类器(3)Anchor Boxes---锚框(4)Dimens…

4D毫米波雷达——原理、对比、优势、行业现状

前言 4D 毫米波雷达是传统毫米波雷达的升级版,4D指的是速度、距离、水平角度、垂直高度四个维度。 相比传统 3D 毫米波雷达,4D 毫米波雷达增加了“高度”的探测,将第四个维度整合到传统毫米波雷达中。 4D毫米波雷达被视为未来车载雷达的一…

Elasticsearch:和 LIamaIndex 的集成

LlamaIndex 是一个数据框架,供 LLM 应用程序摄取、构建和访问私有或特定领域的数据。 LlamaIndex 是开源的,可用于构建各种应用程序。 在 GitHub 上查看该项目。 安装 在 Docker 上设置 Elasticsearch 使用以下 docker 命令启动单节点 Elasticsearch 实…

【Go面试向】rune和byte类型的认识与使用

【Go】rune和byte类型的认识与使用 大家好 我是寸铁👊 总结了一篇rune和byte类型的认识与使用的文章✨ 喜欢的小伙伴可以点点关注 💝 byte和rune类型定义 byte,占用1个字节,共8个比特位,所以它实际上和uint8没什么本质区别,它表示…

基于Docker的Nginx的安装与配置

基于Docker的Nginx的安装与配置 1 为Nginx创建一个容器1.1 学习docker run1.2 通过docker run为Nginx创建并启动一个容器 2 配置Nginx2.1 学习docker的bind mount技术2.2 在Nginx容器中找到想修改的文件所在的目录2.2.1 认识nginx.conf文件2.2.2 访问Nginx服务,默认…

【陈老板赠书活动 - 22期】- 人工智能(第三版)

陈老老老板🧙‍♂️ 👮‍♂️本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 🤴本文简述:活就像海洋,只有意志坚强的人,才能到达彼岸。 👳‍♂️上一篇文章&#xff…

学习JavaEE的日子 day13 封装 static private this 类加载机制

Day13 1. private – 私有化 理解:private是访问修饰符的一种,访问修饰符规定了访问权限. 作用: ​ 1.private修饰属性:该属性只能在类的内部使用 ​ 2.private修饰方法:该方法只能在类的内部使用 应用场景&#xff1…

【Flutter 问题系列第 80 篇】TextField 输入框组件限制可输入的最大长度后,输入的内容中包含表情符号时,获取输入的内容数还是会超出限制的问题

这是【Flutter 问题系列第 80 篇】,如果觉得有用的话,欢迎关注专栏。 博文当前所用 Flutter SDK:3.10.5、Dart SDK:3.0.5 一:问题描述 在输入用户名称、简介等内容时,一般我们都会限制输入框内最大可输入…

011:vue结合css动画animation实现下雪效果

文章目录 1. 实现效果2. 编写一个下雪效果组件 VabSnow.vue3. 页面使用4. 注意点 1. 实现效果 GIF录屏文件太卡有点卡&#xff0c;实际是很丝滑的 2. 编写一个下雪效果组件 VabSnow.vue 在 src 下新建 components 文件&#xff0c;创建VabSnow.vue组件文件 <template>…

系分备考计算机网络传输介质、通信方式和交换方式

文章目录 1、概述2、传输介质3、网络通信4、网络交换5、总结 1、概述 计算机网路是系统分析师考试的常考知识点&#xff0c;本篇主要记录了知识点&#xff1a;网络传输介质、网络通信和数据交换方式等。 2、传输介质 网络的传输最常见的就是网线&#xff0c;也就是双绞线&…

k8s---ingress对外服务(ingress-controller)

ingress 概念 k8s的对外服务&#xff0c;ingress service作用现在两个方面&#xff1a; 1、集群内部&#xff1a;不断跟踪的变化&#xff0c;更新endpoint中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部&#xff1a;类似于负载均衡器&a…

球幕影院气膜:未来娱乐的奇妙之旅

球幕影院气膜&#xff1a;未来娱乐的奇妙之旅 在科技日新月异的时代&#xff0c;娱乐体验的创新与演变从未停歇。气膜球幕影院&#xff0c;作为一项领航未来的前沿科技&#xff0c;正以其沉浸感和颠覆性的观影体验&#xff0c;吸引着人们驻足体验。 创新科技的巅峰之作 气膜球幕…

ubuntu开放ssh服务

&#x1f4d1;前言 本文主要是【ubuntu】——ubuntu开放ssh服务的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…

港科夜闻|香港科大团队研发多功能,可重构和抗破坏单线感测器阵列

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大团队研发多功能、可重构和抗破坏单线感测器阵列。研究人员开发出一种受人类听觉系统启发的感测器阵列设计技术。透过模仿人耳根据音位分布来区分声音的能力&#xff0c;这种新型感测器阵列方法可能优化感测器阵列…

【JaveWeb教程】(26) Mybatis基础操作(新增、修改、查询、删除) 详细代码示例讲解(最全面)

目录 1. Mybatis基础操作1.1 需求1.2 准备1.3 删除1.3.1 功能实现1.3.2 日志输入1.3.3 预编译SQL1.3.3.1 介绍1.3.3.2 SQL注入1.3.3.3 参数占位符 1.4 新增1.4.1 基本新增1.4.2 主键返回 1.5 更新1.6 查询1.6.1 根据ID查询1.6.2 数据封装1.6.3 条件查询1.6.4 参数名说明 1. Myb…

CHAPTER 9: 《DESIGN A WEB CRAWLER》第9章 《设计一个web爬虫》

CHAPTER 9: 《DESIGN A WEB CRAWLER》第九章 设计一个web爬虫 在本章中&#xff0c;我们将重点介绍网络爬虫设计&#xff1a;一种有趣而经典的系统设计 面试问题。 网络爬虫被称为机器人或蜘蛛。它被搜索引擎广泛用于发现网络上的新内容或更新内容。内容可以是网页、图像、视频…

scroll-view在小程序页面里实现滚动,uniapp项目

要实现红框中的区域进行滚动,scroll-view必须写高 <template><!-- 合同-待确认 --><view class"viewport"><!-- 上 --><view class"top-box"><!-- tab --><view class"tabs"><textv-for"(ite…