lombok原理 @Slf4j 怎么生成get set log

Lombok是一种Java库,通过注解的方式提供了许多有用的功能,包括生成Getter、Setter、日志等。@Slf4j注解是Lombok中的一种,它用于自动生成日志记录器(Logger)。

下面简要介绍一下Lombok的原理,以及@Slf4j注解的使用:

Lombok原理:

Lombok通过在编译时期,使用注解处理器(Annotation Processor)来生成代码,从而避免了开发者手动编写一些重复性的代码,例如Getter和Setter方法、toString方法、equals方法等。

在使用Lombok的类上加上注解后,Lombok会在编译时扫描这些注解,然后在生成字节码文件时,根据注解生成相应的方法和字段。这样,开发者就能够以更简洁的方式书写Java代码。

@Slf4j注解的使用:

@Slf4j是Lombok提供的一个注解,用于自动生成日志记录器。使用该注解之后,不需要在类中手动声明Logger,Lombok会为你自动创建一个以类名为参数的Logger对象。

例如:

import lombok.extern.slf4j.Slf4j;@Slf4j
public class MyClass {public void myMethod() {log.info("This is a log message");}
}

在上面的例子中,Lombok会自动为MyClass生成一个名为log的Logger对象,然后你就可以使用这个Logger对象进行日志记录。

在这个例子中,@Slf4j注解的作用就是自动生成这个Logger对象,而不需要你手动声明。

需要注意的是,使用@Slf4j注解之前,确保你的项目中已经引入了SLF4J和相应的日志实现,例如Logback。否则,在编译时可能会出现找不到Logger类的情况。


在日志记录中,占位符是一种非常有用的方式,可以动态地将变量值插入到日志消息中,而不需要在日志语句中硬编码这些值。在Java中,使用SLF4J或其他日志框架时,占位符通常用于提高日志记录的性能和可读性。

以下是使用SLF4J的日志占位符的基本用法:

  1. 基本用法:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;public class Example {private static final Logger log = LoggerFactory.getLogger(Example.class);public static void main(String[] args) {String name = "John";int age = 30;// 使用占位符log.info("User information: Name = {}, Age = {}", name, age);}
    }
    

    在这个例子中,{} 是占位符,它们会被后面传递给info方法的参数所替代。

  2. 带有变量和表达式的占位符:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;public class Example {private static final Logger log = LoggerFactory.getLogger(Example.class);public static void main(String[] args) {String name = "John";int age = 30;// 带有变量和表达式的占位符log.info("User information: Name = {}, Age = {}, Is Adult = {}", name, age, age >= 18);}
    }
    

    在这个例子中,除了变量之外,还使用了一个表达式(age >= 18)作为占位符的一部分。

  3. 使用参数索引的占位符:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;public class Example {private static final Logger log = LoggerFactory.getLogger(Example.class);public static void main(String[] args) {String name = "John";int age = 30;// 使用参数索引的占位符log.info("User information: Name = {1}, Age = {0}", age, name);}
    }
    

    在这个例子中,通过数字索引(从0开始)指定占位符的替换顺序。

这些例子中的占位符都是用于log.info方法,但类似的占位符语法也适用于其他日志级别,例如debugwarnerror等。

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

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

相关文章

一v一聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

使用加密工具The Enigma Protector ,快速保护您的软件安全

我们多次被问到使用Enigma Protector保护软件免遭破解和逆向工程的最佳方法是什么?在这里我将解释保护常用应用程序的技巧是什么。 许多开发人员认为,如果他们只需单击“保护”按钮,保护程序就会自动完成所有操作,无需嵌入额外的…

【Java基础系列】JavaWeb入门

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Linux学习笔记7-SPI的应用和ICM-26068

和IIC类似,我也会针对一个使用SPI通信的芯片ICM-26068来写它的驱动,从而学习SPI通信的应用。 SPI通信的基本原理在单片机中已经详细学习过了,我认为需要理解的是它的全双工,即在同一时间内既可以从主机发送数据到从机,…

「C++」哈希表的实现(unordered系底层)

💻文章目录 📄前言哈希表概念哈希函数 哈希冲突闭散列开散列 📓总结 📄前言 unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构,使其在查找上的时间复杂度几乎减低到了 O ( 1 ) O(1) O(1)。 哈希…

企业ERP软件定制开发的重点|app小程序网站建设

企业ERP软件定制开发的重点|app小程序网站建设 随着企业信息化程度的不断提高,企业资源计划(ERP)软件成为了现代企业管理的重要工具。然而,由于不同企业的业务流程、组织结构和管理模式各异,现有的通用ERP软件无法完全…

qt 定时器用法

在qt开发中,定时器是我们经常用到的。我们接下来说一下定时器的三种用法,需要注意的是定时器事件是在主线程中触发的,因此在处理耗时操作时应特别小心,以避免阻塞应用程序的事件循环。 1. 三种定时器使用 1.1 QObject的定时器 …

HTTPS双向认证

HTTPS双向认证和普通的HTTPS认证在安全性和验证方式上有所区别。 安全性: 普通的HTTPS认证(单向认证)只验证服务器的身份,客户端的身份没有得到验证,因此安全性相对较低。HTTPS双向认证则不仅需要服务器进行身份验证&a…

基于若依的ruoyi-nbcio的flowable流程管理系统增加服务任务和我的抄送功能

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 1、增加一个状态字段 wf_copy增加下面两个字段 就用未读已读来区分 2、前端 api接口增加如下&#xff…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第一次作业

1 设关系 r r r 和 s s s 如下: r ( A B C ) a 2 b 3 c 2 a 2 b 1 c 1 a 2 b 2 c 1 a 1 b 1 c 2 s ( B C D ) b 1 c 1 d 1 b 2 c 1 d 1 b 2 c 2 d 1 \begin{array}{c} r&(A & B & C) \\ &\;\;a_2 & b_3 & c_2\; \\ &\;\;a_2 & …

IDEA检查项目的jdk版本需要看的地方

IDEA检查项目的jdk版本需要看的地方 1、检查项目结构,如下图所示选择即可 选择了之后打开了如下界面: 下面的三张图全部都要检查选择jdk8的版本 2、进入设置,如下所示: 进入之后,根据下图,挨个选择&#xf…

「海蓝色」海关可视化监管平台,助力海关体系实现规范化程序管理

海关监管是国家对进出境货物、旅客和邮件进行检查和控制的重要机构,其职责是保障国家的安全和经济利益。海关监管的核心目标是防止非法进出境活动,包括走私、偷逃税款等行为。海关监管通过检查和核实货物的品质、数量和价值,确保货物符合相关…

SMART PLC编码器角度测量

编码器角度测量在倒立摆摆杆角度测量上的应用请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131443657https://rxxw-control.blog.csdn.net/article/details/131443657线性模式下编码器旋转圈数和单圈计数值测量可以查看下面文章: https://rxxw…

C语言实现植物大战僵尸(完整版)

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载,大家可自行查看 然后就是需要植物大战僵尸的素材和音乐,需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

关于pycharm代码误删,本地历史恢复

关于pycharm代码误删,本地历史恢复 1.工作中或多或少的出现代码误删,或者其他原因导致我们的辛辛苦苦写的码子没了,一定很着急。 2.我们点击工作目录文件夹或者是项目内鼠标右击,找到local history 然后选择show history,就可以…

新零售时代:直销与分销的善用与融合

随着互联网技术的不断发展,零售业正在经历一场前所未有的变革。传统的实体店销售模式已经无法满足消费者对于购物体验的需求,而电子商务的兴起也使得线上销售成为一种新的消费趋势。在这场变革中,直销和分销这两种销售模式也逐渐凸显出其重要…

Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

一、Python安装 最新版Python下载地址:https://www.python.org/ 根据操作系统选择对应版本制品下载安装即可,本机用的是Windows x86-64 executable installer。 注意事项: 安装完成后检查下环境变量,默认会配置好,可…

算法初阶双指针+C语言期末考试之编程题加强训练

双指针 常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针:⼀般⽤于顺序结构中,也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼…

剑指 Offer(第2版)面试题 19:正则表达式匹配

剑指 Offer(第2版)面试题 19:正则表达式匹配 剑指 Offer(第2版)面试题 19:正则表达式匹配解法1:递归解法2:动态规划 剑指 Offer(第2版)面试题 19:…

【链表Linked List】力扣-2 两数相加

目录 题目描述 解题过程 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 …