摘要:創(chuàng)建對(duì)象工具類設(shè)置父類設(shè)置屬性的使用范圍,如等,也可以設(shè)置屬性是否被修飾。所以顯示的是按鈕重啟。即使沒(méi)有重寫(xiě)方法,依然可以調(diào)用,而且結(jié)果和重寫(xiě)了方法一樣。最后奉上項(xiàng)目完整代碼后語(yǔ)以上就是我對(duì)插件的理解與使用,希望對(duì)你們有幫助。
微信公眾號(hào):一個(gè)優(yōu)秀的廢人前言
如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。
上周去了開(kāi)年會(huì),去的地方是溫泉度假村。老實(shí)說(shuō),我是無(wú)感的,90% 是因?yàn)闆](méi)中獎(jiǎng)(老板太摳,兩百人只抽三個(gè)獎(jiǎng)),10 % 是因?yàn)閺男∨轀厝L(zhǎng)大沒(méi)啥感覺(jué)。
LomBok 是什么?LomBok 是一個(gè)插件,它能通過(guò)注解幫我們消除那些必須要寫(xiě)但是重復(fù)的代碼,比如setter,getter,構(gòu)造函數(shù)之類的方法。
試想一個(gè)場(chǎng)景,在項(xiàng)目開(kāi)發(fā)中,我們往往需要定義大量的數(shù)據(jù)庫(kù)實(shí)體或者某些工具 Bean ,每一個(gè) Bean 都需要我們編寫(xiě) getter 、setter 方法、構(gòu)造方法以及 toString 等方法。這是一個(gè)非常繁瑣的過(guò)程。程序員準(zhǔn)則,做三遍以上的重復(fù)事情就必須想辦法讓它自動(dòng)化了。所以今天給你們介紹一個(gè)牛逼的插件「LomBok」。
LomBok 常用注解簡(jiǎn)介@Data:注解在類上,將類提供的所有屬性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法 @Setter:注解在類上,為所有屬性添加set方法、注解在屬性上為該屬性提供set方法 @Getter:注解在類上,為所有的屬性添加get方法、注解在屬性上為該屬性提供get方法 @NotNull:在參數(shù)中使用時(shí),如果調(diào)用時(shí)傳了null值,就會(huì)拋出空指針異常 @Synchronized 用于方法,可以鎖定指定的對(duì)象,如果不指定,則默認(rèn)創(chuàng)建一個(gè)對(duì)象鎖定 @Log作用于類,創(chuàng)建一個(gè)log屬性 @Builder:使用builder模式創(chuàng)建對(duì)象 @NoArgsConstructor:創(chuàng)建一個(gè)無(wú)參構(gòu)造函數(shù) @AllArgsConstructor:創(chuàng)建一個(gè)全參構(gòu)造函數(shù) @ToStirng:創(chuàng)建一個(gè)toString方法 @Accessors(chain = true)使用鏈?zhǔn)皆O(shè)置屬性,set方法返回的是this對(duì)象。 @RequiredArgsConstructor:創(chuàng)建對(duì)象 @UtilityClass:工具類 @ExtensionMethod:設(shè)置父類 @FieldDefaults:設(shè)置屬性的使用范圍,如private、public等,也可以設(shè)置屬性是否被final修飾。 @Cleanup: 關(guān)閉流、連接點(diǎn)。 @EqualsAndHashCode:重寫(xiě)equals和hashcode方法。 @toString:創(chuàng)建toString方法。如何安裝?
1、直接從 http://plugins.jetbrains.com/ 下載,然后放到IDEA 安裝文件下面的 plugins,然后重啟 IDEA。
2、在 IDEA 的 settings(windows)或者Preferences(mac),下找到 plugins 菜單,點(diǎn)擊 Browse repositories,如下圖
第二步搜索 LomBok 點(diǎn)擊 Install (我這里已經(jīng)安裝了,但是有更新。所以顯示的是 Update 按鈕)重啟 IDEA 。
代碼演示新建 SpringBoot 項(xiàng)目,不會(huì)構(gòu)建的看這篇文章 使用 IDEA 構(gòu)建 Spring Boot 工程 ,構(gòu)建時(shí)勾選 web 依賴和 Lombok 依賴,完整 pom 如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.2.RELEASE com.nasus lombok 0.0.1-SNAPSHOT lombok lombok_demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
新建一個(gè) Student 類,這是使用 lombok 的類,代碼如下:
package com.nasus.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Project Name:springboot_lomnok_demo
* Package Name:com.nasus.entity
* Date:2019/1/23 0023 14:32
* Description: TODO: 描述該類的作用
* * @author chenzy
* 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 //自動(dòng)生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數(shù)的構(gòu)造方法 @AllArgsConstructor //自動(dòng)生成構(gòu)造方法 @NoArgsConstructor //自動(dòng)生成構(gòu)造方法 public class Student { private String id; private String name; private int age; }
新建一個(gè) StudentNoLombok 類,這是沒(méi)有使用 lombok 的類(此類在項(xiàng)目中無(wú)用處,只為與使用 Lombok 的類對(duì)比,突出使用 LomBok 類代碼的簡(jiǎn)潔),代碼如下:
package com.nasus.entity; import java.util.Objects; /** * Project Name:springboot_lomnok_demo
* Package Name:com.nasus.entity
* Date:2019/1/23 0023 14:34
* Description: TODO: 描述該類的作用
* * @author chenzy
* 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 + "}"; } }
從上面兩個(gè)類對(duì)比可以看出,使用 LomBok 插件的類比不使用簡(jiǎn)潔美觀得多。
新建 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
* Package Name:com.nasus.controller
* Date:2019/1/23 0023 14:37
* Description: TODO: 描述該類的作用
* * @author chenzy
* 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("陳志遠(yuǎn)"); System.out.println(student.toString()); return student; } }
啟動(dòng)項(xiàng)目,訪問(wèn)地址 http://localhost:8080/student/testLombok 瀏覽器輸出如下:
控制臺(tái)輸出如下:
由上面兩個(gè)輸出結(jié)果可以看出,LomBok 插件起作用了。即使 Student 沒(méi)有重寫(xiě) toString 方法,依然可以調(diào)用,而且結(jié)果和重寫(xiě)了 toString 方法一樣。
當(dāng)項(xiàng)目很龐大的時(shí)候,往往基礎(chǔ)的 Bean 也非常多。建議看到這篇文章的你可以在項(xiàng)目中把 LomBok 用起來(lái)。
最后奉上 項(xiàng)目完整代碼
后語(yǔ)以上就是我對(duì) LomBok 插件的理解與使用,希望對(duì)你們有幫助。最后,對(duì) Python 、Java 感興趣請(qǐng)長(zhǎng)按二維碼關(guān)注一波,我會(huì)努力帶給你們價(jià)值,如果覺(jué)得本文對(duì)你哪怕有一丁點(diǎn)幫助,請(qǐng)幫忙點(diǎn)好看,讓更多人知道。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/73207.html
摘要:概述通過(guò)提供簡(jiǎn)單的語(yǔ)法注解形式來(lái)幫助簡(jiǎn)化消除一些必須有但顯得很臃腫的代碼。作用在方法參數(shù)上的注解,用于自動(dòng)生成空值參數(shù)檢查自動(dòng)幫我們調(diào)用方法。 showImg(https://segmentfault.com/img/remote/1460000014247343); 概述 Lombok 通過(guò)提供簡(jiǎn)單的語(yǔ)法注解形式來(lái)幫助簡(jiǎn)化消除一些必須有但顯得很臃腫的 java 代碼。典型的是對(duì)于 ...
摘要:前言如題,今天介紹的聲明式事務(wù)。提供一個(gè)注解在配置類上來(lái)開(kāi)啟聲明式事務(wù)的支持。而在配置里還開(kāi)啟了對(duì)聲明式事務(wù)的支持,代碼如下所以在中,無(wú)須顯式開(kāi)啟使用注解。源碼下載后語(yǔ)以上為聲明式事務(wù)的教程。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 如題,今天介紹 SpringBoot 的 聲明式事務(wù)。 Spring 的事務(wù)機(jī)制 所有的數(shù)據(jù)訪問(wèn)技術(shù)都有事務(wù)處...
摘要:提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的字段關(guān)系映射提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組建維護(hù)提供標(biāo)簽,支持編寫(xiě)動(dòng)態(tài)。層實(shí)現(xiàn)類添加更新刪除根據(jù)查詢查詢所有的層構(gòu)建測(cè)試結(jié)果其他接口已通過(guò)測(cè)試,無(wú)問(wèn)題。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 如題,今天介紹 SpringBoot 與 Mybatis 的整合以及 Mybatis 的使用,本文通過(guò)注解的形式...
閱讀 3357·2021-11-23 09:51
閱讀 1142·2021-09-03 10:30
閱讀 3274·2021-08-31 09:40
閱讀 3336·2019-08-30 14:22
閱讀 978·2019-08-30 14:09
閱讀 2965·2019-08-30 13:21
閱讀 3326·2019-08-28 18:03
閱讀 2916·2019-08-26 13:44