码迷,mamicode.com
首页 > 其他好文 > 详细

大家都用lombok吧?其实,我一直不明白这个log对象是在哪里声明的

时间:2020-07-03 19:50:49      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:plugin   鼠标   java类   答案   factory   mic   多重   直接   源码   

lombok相信大家都在用。lombok提供了一系列的注解,可以让我们减少很多重复性的代码量,方便我们快速开发应用程序。比如:在model类上使用@Data,就不用再写get/set方法。同样,lombok还为对象提供了toString方法,给我们记日志提供了方便。再比如,使用了@Slf4j注解后,就可以直接使用log对象来记录日志了。

 

好,说我一直以来的疑问。就拿log来说吧。为什么加了@Slf4j注解,就可以直接使用log对象了呢?这个log对象是在哪里声明的呢?

看了一些lombok的源码,不过因为有混淆,不得其踪。百度“lombok @Slf4j log是在哪里定义的”,暂未查到,总之呢,就像同事提醒的,知道是lombok在程序编译的时候给加的就好了,不必过度追根问底,毕竟我们更应该关注应用。即:程序build时,lombok会在使用了@Slf4j注解的类里生成一个private static final Logger log = LoggerFactory.getLogger(IdempotentController.class);。用IDEA打开编译后的.class文件可以看到。见下面截图:

技术图片

 

 

 还是刚才的问题。我们在编写一个.java类时,为什么加了@Slf4j注解,类的方法里就可以直接使用这个log对象而不报错呢?鼠标放到log上面,可以看到其定义。————每次鼠标划上去看到这个定义,我都会有这个弱弱的疑问。

技术图片

 

 答案:这得益于IDEA所集成的lombok插件。从File->Settings->Plugins里可以看到。安装了这个插件,IDEA就允许我们直接使用这个log了,当然,model属性的get/set都是如此。

技术图片

 

 

那么,是这样子的吗?
我们去掉lombok插件,可以看到log啦、get/set啦,都变红色了。不过这并不影响程序的正常执行,运行程序是ok的。因为上面说的,lombok会在程序build的时候生成相关的log对象,以及get set方法。

没有这个插件,我们可以照样这么用log属性,不过呢,因为没有任何提示,只能盲打了,让IDEA集成lombok插件,自然就不用盲打了。

技术图片

 


 

 

技术图片

 

大家都用lombok吧?其实,我一直不明白这个log对象是在哪里声明的

标签:plugin   鼠标   java类   答案   factory   mic   多重   直接   源码   

原文地址:https://www.cnblogs.com/buguge/p/13232168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!