5

@Slf4j注解的用途

 2 years ago
source link: https://chen3961.github.io/java/2019/06/10/@Slf4j-Usage/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

@Slf4j注解的用途

Jun 10, 2019
1 minute read

@Slf4j这个注解,并不是Slf4j这个项目所提供的。而是由lombok这个项目提供的,这个项目的主要功能是实现了在java代码中使用注解的方式来减少代码量。

lombok这个项目使用最多的一个功能就是@Data注解。通过给一个类加上这个注解就能够自动生成getter,setter方法,而不需要自己写。以下面的java代码为例:

@Data
public class Entity{
	private String name;
	private String description;
	private int value;
}

@Data这个注解就自动地为上述三个属性值。自动定义了getter,setter方法。

lombok这个项目代码注入的方式是通过字节码修改的方式实现的,并不像spring那样通过创建动态代理类的方法,而在编译期直接改变java的抽象语法数,实现目标代码的注入。看来是个邪恶的东西。

话说回来,@Slf4j这个注解也是具有类似的特性。它本质上代表了一段代码,但是不需要写,而是让lombok帮我们生成。@Slf4j其实就是代表了在对应的类中使用Slf4j中获取Logger对象的代码,它等价于在对应的类中插入下述代码:

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

其中LogExample是这个注解修饰的类,这样,不需要每次都使用上面的代码进行log对象的定义,加一个注解就可以使用以log命名的对象实现java Logger的功能。

这里还需要声明一点,由于lombok是在编译时才实现代码的注入,所以在编译前IDE是无法感知注解的信息的,同时也识别不了log这个对象,会产生编译错误告警。为了防止这种误报,这时就需要在IDE安装lombok的插件。以idea为例, 安装这个插件后重启IDE就能够解决log对象的无法识别的问题。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK