zoukankan      html  css  js  c++  java
  • 大家都用lombok吧?其实,我一直不明白这个log对象是在哪里声明的

    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插件,自然就不用盲打了。


    Jason曾是我组与我们一起做应用开发的小伙伴,技术嗅觉灵敏,是我的得力智囊。他已与近期离职,技术上有琢磨不明白的疑问,还是愿意找他,总能给出见解。

  • 相关阅读:
    不可小视视图对效率的影响力
    Maximum Margin Planning
    PhysicsBased Boiling Simulation

    Learning Behavior Styles with Inverse Reinforcement Learning
    Simulating Biped Behaviors from Human Motion Data
    Nearoptimal Character Animation with Continuous Control
    Apprenticeship Learning via Inverse Reinforcement Learning
    回报函数学习的学徒学习综述
    Enabling Realtime Physics Simulation in Future Interactive Entertainment
  • 原文地址:https://www.cnblogs.com/buguge/p/13232168.html
Copyright © 2011-2022 走看看