lombok插件_lombok插件,让代码更简洁
是否厭倦了寫一個實體類就要重復使用快捷鍵生成該類的getter,setter,無參有參構造?那么lombok插件可以幫你解決這些重復性勞動。之前文章中,也有說到lombok插件,此篇文章就詳細介紹下lombok插件的使用。
lombok簡介
Lombok想要解決了的是在我們實體Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不會用到,但是某些時候仍然需要復寫,以期方便使用的方法;在使用Lombok之后,將由其來自動幫你實現代碼生成,注意,其是 在運行過程中,幫你自動生成的 。就是說,將極大減少你的代碼總量。
注: 無需擔心lombok會影響到性能以及效率問題,在編譯的時候,lombok就只會一次性將get/set生成在class文件中,跟自己寫get和set方法是無差別的。
IntelliJ IDEA安裝
菜單欄File > Settings > Plugins > Browse repositories > 搜索lombok > install > 重啟
pom依賴
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.4</version> </dependency>注: 在@Component類中使用lombok注解時會拋出Invalid byte tag in constant pool: 19異常,只需將版本降到1.14.8即可快速使用
1.編寫一個實體類 Person,使用@Data注解
package com.example.joemale.model; import lombok.Data; @Data public class Person {private Integer id;private String name;private Integer age; }2.編寫測試方法,測試@Data的作用
package com.example.joemale;import com.example.joemale.model.Person; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class LombokApplicationTests {@Testpublic void lombokTest() {Person p = new Person();p.setId(1);p.setName("joemale");p.setAge(22);log.info(p.toString());} }可以看到,我們并沒有編寫getter、setter方法,這里卻可以正常使用,并且還重寫了toString、hashCode、equals方法。
lombok的注解介紹
@NonNull : 讓你不在擔憂并且愛上NullPointerException
@CleanUp : 自動資源管理:不用再在finally中添加資源的close方法
@Setter/@Getter : 自動生成set和get方法
@ToString : 自動生成toString方法
@EqualsAndHashcode : 從對象的字段中生成hashCode和equals的實現
@Data : 自動生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數的構造方法
@Value : 用于注解final類
@Builder : 產生復雜的構建器api類
@SneakyThrows : 異常處理(謹慎使用)
@Synchronized : 同步方法安全的轉化
@Getter(lazy=true) : 它將在第一次調用該getter時計算一次值,并從那時起緩存它。
@Log : 支持各種logger對象,使用時用對應的注解,如:@Log4j
@NoArgsConstructor/@RequiredArgsConstructor /@AllArgsConstructor:
這三個注解都是用在類上的,第一個和第三個都很好理解,就是為該類產生無參的構造方法和包含所有參數的構造方法,
第二個注解則使用類中所有帶有@NonNull注解的或者帶有final修飾的成員變量生成對應的構造方法,當然,和前面幾個注解一樣,成員變量都是非靜態的,
另外,如果類中含有final修飾的成員變量,是無法使用@NoArgsConstructor注解的。
三個注解都可以指定生成的構造方法的訪問權限,同時,第二個注解還可以用@RequiredArgsConstructor(staticName="methodName")的形式生成一個指定名稱的靜態方法,返回一個調用相應的構造方法產生的對象,下面來看一個例子
@RequiredArgsConstructor(staticName = "sunsfan") @AllArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor public class Shape {private int x;@NonNullprivate double y;@NonNullprivate String name; }實際效果相當于:
public class Shape {private int x;private double y;private String name;public Shape(){}protected Shape(int x,double y,String name){this.x = x;this.y = y;this.name = name;}public Shape(double y,String name){this.y = y;this.name = name;}public static Shape sunsfan(double y,String name){return new Shape(y,name);} }總結
以上是生活随笔為你收集整理的lombok插件_lombok插件,让代码更简洁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单谈谈DNS协议
- 下一篇: python token 访问控制_py