微信公衆號:一個優秀的廢人
若有問題或建議,請後臺留言,我會盡力解決你的問題。
上週去了開年會,去的地方是溫泉度假村。老實說,我是無感的,90% 是由於沒中獎(老闆太摳,兩百人只抽三個獎),10 % 是由於從小泡溫泉長大沒啥感受。java
LomBok 是一個插件,它能經過註解幫咱們消除那些必需要寫可是重複的代碼,好比setter,getter,構造函數之類的方法。git
試想一個場景,在項目開發中,咱們每每須要定義大量的數據庫實體或者某些工具 Bean ,每個 Bean 都須要咱們編寫 getter 、setter 方法、構造方法以及 toString 等方法。這是一個很是繁瑣的過程。程序員準則,作三遍以上的重複事情就必須想辦法讓它自動化了。因此今天給大家介紹一個牛逼的插件「LomBok」。程序員
@Data:註解在類上,將類提供的全部屬性都添加get、set方法,並添加、equals、canEquals、hashCode、toString方法 @Setter:註解在類上,爲全部屬性添加set方法、註解在屬性上爲該屬性提供set方法 @Getter:註解在類上,爲全部的屬性添加get方法、註解在屬性上爲該屬性提供get方法 @NotNull:在參數中使用時,若是調用時傳了null值,就會拋出空指針異常 @Synchronized 用於方法,能夠鎖定指定的對象,若是不指定,則默認建立一個對象鎖定 @Log做用於類,建立一個log屬性 @Builder:使用builder模式建立對象 @NoArgsConstructor:建立一個無參構造函數 @AllArgsConstructor:建立一個全參構造函數 @ToStirng:建立一個toString方法 @Accessors(chain = true)使用鏈式設置屬性,set方法返回的是this對象。 @RequiredArgsConstructor:建立對象 @UtilityClass:工具類 @ExtensionMethod:設置父類 @FieldDefaults:設置屬性的使用範圍,如private、public等,也能夠設置屬性是否被final修飾。 @Cleanup: 關閉流、鏈接點。 @EqualsAndHashCode:重寫equals和hashcode方法。 @toString:建立toString方法。
一、直接從 http://plugins.jetbrains.com/ 下載,而後放到IDEA 安裝文件下面的 plugins,而後重啓 IDEA。github
二、在 IDEA 的 settings(windows)或者Preferences(mac),下找到 plugins 菜單,點擊 Browse repositories,以下圖web
第二步搜索 LomBok 點擊 Install (我這裏已經安裝了,可是有更新。因此顯示的是 Update 按鈕)重啓 IDEA 。spring
新建 SpringBoot 項目,不會構建的看這篇文章 使用 IDEA 構建 Spring Boot 工程 ,構建時勾選 web 依賴和 Lombok 依賴,完整 pom 以下:數據庫
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.nasus</groupId> <artifactId>lombok</artifactId> <version>0.0.1-SNAPSHOT</version> <name>lombok</name> <description>lombok_demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
新建一個 Student 類,這是使用 lombok 的類,代碼以下:apache
package com.nasus.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Project Name:springboot_lomnok_demo <br/> * Package Name:com.nasus.entity <br/> * Date:2019/1/23 0023 14:32 <br/> * <b>Description:</b> TODO: 描述該類的做用 <br/> * * @author <a href="mailto:chenzy@eastcom-sw.com">chenzy</a><br/> * Copyright Notice ========================================================= * This file contains proprietary information of Eastcom Technologies Co. Ltd. * Copying or reproduction without prior written approval is prohibited. * Copyright (c) 2019 ======================================================= */ @Data //自動生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數的構造方法 @AllArgsConstructor //自動生成構造方法 @NoArgsConstructor //自動生成構造方法 public class Student { private String id; private String name; private int age; }
新建一個 StudentNoLombok 類,這是沒有使用 lombok 的類(此類在項目中無用處,只爲與使用 Lombok 的類對比,突出使用 LomBok 類代碼的簡潔),代碼以下:windows
package com.nasus.entity; import java.util.Objects; /** * Project Name:springboot_lomnok_demo <br/> * Package Name:com.nasus.entity <br/> * Date:2019/1/23 0023 14:34 <br/> * <b>Description:</b> TODO: 描述該類的做用 <br/> * * @author <a href="mailto:chenzy@eastcom-sw.com">chenzy</a><br/> * Copyright Notice ========================================================= * This file contains proprietary information of Eastcom Technologies Co. Ltd. * Copying or reproduction without prior written approval is prohibited. * Copyright (c) 2019 ======================================================= */ public class StudentNoLombok { private String id; private String name; private int age; public StudentNoLombok() { } public StudentNoLombok(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof StudentNoLombok)) { return false; } StudentNoLombok that = (StudentNoLombok) o; return age == that.age && Objects.equals(id, that.id) && Objects.equals(name, that.name); } @Override public int hashCode() { return Objects.hash(id, name, age); } @Override public String toString() { return "StudentNoLombok{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age=" + age + '}'; } }
從上面兩個類對比能夠看出,使用 LomBok 插件的類比不使用簡潔美觀得多。瀏覽器
新建 StudentController 類,代碼以下:
package com.nasus.controller; import com.nasus.entity.Student; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * Project Name:springboot_lomnok_demo <br/> * Package Name:com.nasus.controller <br/> * Date:2019/1/23 0023 14:37 <br/> * <b>Description:</b> TODO: 描述該類的做用 <br/> * * @author <a href="mailto:chenzy@eastcom-sw.com">chenzy</a><br/> * Copyright Notice ========================================================= * This file contains proprietary information of Eastcom Technologies Co. Ltd. * Copying or reproduction without prior written approval is prohibited. * Copyright (c) 2019 ======================================================= */ @RestController @RequestMapping("/student") public class StudentController { @GetMapping("/testLombok") public Student getStudent(){ Student student = new Student(); student.setId("6666666666"); student.setAge(24); student.setName("陳志遠"); System.out.println(student.toString()); return student; } }
啓動項目,訪問地址 http://localhost:8080/student/testLombok 瀏覽器輸出以下:
控制檯輸出以下:
由上面兩個輸出結果能夠看出,LomBok 插件起做用了。即便 Student 沒有重寫 toString 方法,依然能夠調用,並且結果和重寫了 toString 方法同樣。
當項目很龐大的時候,每每基礎的 Bean 也很是多。建議看到這篇文章的你能夠在項目中把 LomBok 用起來。
最後奉上 項目完整代碼
以上就是我對 LomBok 插件的理解與使用,但願對大家有幫助。最後,對 Python 、Java 感興趣請長按二維碼關注一波,我會努力帶給大家價值,若是以爲本文對你哪怕有一丁點幫助,請幫忙點好看,讓更多人知道。