lombok @Slf4j注解


背景

知道有這么個東西,是因為項目中用到了@Slf4j注解。
lombok庫提供了一些注解來簡化java代碼
官網:http://projectlombok.org/
查看lombok所有api:https://projectlombok.org/api/overview-summary.html

幾個常用的 lombok 注解:

@Data:注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在屬性上;為屬性提供 setting 方法
@Getter:注解在屬性上;為屬性提供 getting 方法
@SneakyThrows:無需在簽名處顯式拋出異常
@Log4j:注解在類上;為類提供一個 屬性名為log 的 log4j 日志對像
@Slf4j: 同上
@NoArgsConstructor:注解在類上;為類提供一個無參的構造方法
@AllArgsConstructor:注解在類上;為類提供一個全參的構造方法

實現原理:

Lombok不是通過字節碼改寫來實現的。
它主要是用編譯器內支持的annotation processing,直接操縱抽象語法樹(AST),根據需要添加新節點。
(講真的,不太懂,java基礎不是太好,這一段來自https://www.jianshu.com/p/d0a68a9b46ae

使用方法

  1. 在pom文件添加
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
   
   
  
  
          
  1. 代碼中使用(舉兩個例子,更多的可以看官網api)
    @Slf4j使用

    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    public class LogExample {
    }
         
         
        
        
                

    以上將編譯成

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

    @Getter使用

    private @Getter int foo;
         
         
        
        
                

    以上將編譯成

     public int getFoo() {
         return this.foo;
     }
         
         
        
        
                
  2. 在idea中解決代碼中識別錯誤的問題
    在idea中添加插件lombok(file->setting->plugins)
    這里寫圖片描述
    如果直接安裝失敗,可以先下載安裝包,然后導入,下載地址:https://github.com/mplushnikov/lombok-intellij-plugin/releases
    這里寫圖片描述

這里寫圖片描述
如果報以上錯誤,參考https://blog.csdn.net/github_38410229/article/details/79475745,下載對應ide版本的包。

原文地址:https://blog.csdn.net/xue632777974/article/details/80437452


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM