@Log4j2和@Slf4j到底是哪方神圣

Posted 架构师知音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Log4j2和@Slf4j到底是哪方神圣相关的知识,希望对你有一定的参考价值。

阅读文本大概需要3分钟。

悔恨认识lombok插件太晚。java作为开放源码的语言,所以像GitHub和gitee这些开源的代码仓库有大量优秀的开源系统项目,小编也经常逛这些开源仓库,但是有时也有疏忽大意的时候。就像@Log4j2和@Slf4j这两个注解,经常在一些开源项目看到,但是自己没有去深究,终于在最近在一个朋友项目看到了,而且也用上了,发现了支持@Log4j2和@Slf4j这两个注解的插件lombok非常强大。不仅仅是这两个注解,还提供了大量的其他注解,帮代码减少重复无用的代码开发。


lombok官网

https://projectlombok.org/


lombok常用注解

@Data注解在类上,自动为所有字段添加@ToString,@EqualsAndHashCode,@Getter为非final字段添加@Setter和


@RequiredArgsConstructor本质上相当于几个注解的综合效果


@Getter注解在属性(类)上,为属性(所有非静态成员变量)提供get()方法


@Setter注解在属性(类)上,为属性(所有非静态成员变量)提供set()方法


@ToString 该注解的作用是为类自动生成toString()方法


@EqualsAndHashCode为对象字段自动生成hashCode()和equals()实现


@AllArgsConstructor,@RequiredArgsConstructor,@NoArgsConstructor顾名思义,为类自动生成对应参数的构造器


@Log,@Log4j,@Log4j2,@Slf4j,@XSlf4j,@CommonsLog,@JBossLog注解在类上,自动为类添加对应的日志支持


@NonNull注解在方法参数上,用于自动生成空值参数检查,自动帮助我们避免空指针


@Cleanup自动帮我们调用close()方法,作用在局部变量上,在作用域结束时会自动调用close()方法释放资源,可以关闭流


@Builder注解在类上,被注解的类加个构造者模式Synchronized 注解在类上,加个同步锁


@SneakyThrows等同于try/catch捕获异常


@Value注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set()方法


lombok如何使用

使用lombok是需要安装的,如果不安装,IDE则无法解析lombok注解,有两种方式可以安装lombok;

①.在命令行中执行 java -jar lombok.jar包的位置,比如:java -jar D:/lombok.jar 弹出选择IDE安装路径的提示框,选择IDE的安装路径后,点击install/update 即可安装。安装完成后,eclipse的安装目录下,有lombok.jar包,并且eclipse.ini中有如下两行,则表示安装成功。


②.第二种安装方式就是就是手动安装,即将lombok.jar包拷贝到eclipse的安装目录下,并且在eclipse.ini文件中添加如下两行。

-Xbootclasspath/a:lombok.jar    --备注:如果没有这一行也是没问题的
-javaagent:lombok.jar

重启eclipse即可。但是在你的项目中想要lombok的注解生效,你还需要把lombok.jar加入到你的项目中,如果是maven项目,则在pom文件中添加如下代码:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.12</version>
    <scope>provided</scope>
</dependency>


往期精彩



01 

02 

03 

关注我

每天进步一点点

你点的每个好看,我都认真当成了喜欢


以上是关于@Log4j2和@Slf4j到底是哪方神圣的主要内容,如果未能解决你的问题,请参考以下文章

slf4j log4j logback

slf4j 怎么调用 log4j

slf4j与log4j是什麽关系?

log4j和slf4j的使用

Log4j2/Slf4j 和 Java 11

Log4j 2 + Slf4j 的配置和使用