一、龍目島
二、印度尼西亞西努沙登加拉(Nusa Tenggara Barat)省島嶼
三、西龍目海峽面對巴厘島,東隔阿拉斯(Alas)海峽面松巴哇(Sumbawa)島,北瀕爪哇島,南臨印度洋。java
官網對其的介紹:經過簡單註解來精簡代碼達到消除冗長代碼的目的框架
一、提升編碼效率
二、使代碼更簡潔
三、消除冗長代碼
四、避免修改字段名字時忘記修改方法名
五、提升下「逼格」
注:IDE上必需要支持Lombok,不然IDE會報錯maven
一、其開發是遵循JSR 269 Pluggable Annotation Processing API
二、而javac從java6開始支持「JSR 269 API」規範
三、即只要程序實現了該API,就能在javac運行的時候獲得調用
四、Lombok實現了「JSR 269 API」,在編譯時,javac編譯源碼的具體流程以下:ide
在maven的pom配置文件中引入工具
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <scope>provided</scope> </dependency>
注:若是是IDEA須要安裝Lombok插件、Eclipse則下載對應的jar
@Data :生成對應Getter、Setter
@Getter
@Getter(AccessLevel.PROTECTED)-生成的Get的權限是protected
@Setter
@Setter(AccessLevel.PROTECTED)網站
@NoArgsConstructor-無參構造器
@AllArgsConstructor-全部參數構造器
@ToString
@ToString(exclude = 「column」)-排除this
@EqualsAndHashCode
@EqualsAndHashCode(exclude = 「column」)
@Slf4j(使用logback日誌框架)
@log4j(使用log4j日誌框架)編碼
@ToString(exclude = {「column1」,」column2「})黑名單
@ToString(of = {「column1」,「column2」})白名單
EqualsAndHashCode同上spa
@Data包含了(@Getter、@Setter、@ToString、@EqualsAndHashCode)插件
以上是大體的一些使用方式,讓咱們經過反編譯來了解Lombok的實現。
Java Decompiler你們能夠在這個網站下載JD-GUI,一個便捷的反編譯工具。
咱們經過Java Decompiler驗證 Clas文件
@Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(exclude = "name") @ToString(of = "password") public class Person implements Serializable{ private static final long serialVersionUID = 5965420331615591278L; private Integer id; private String name; private String password; }
@Slf4j public class PersonServiceImpl { public Person findOne(){ log.info("findOne success"); return new Person(); } }
我在一個pojo對象中注入了Lombok的註解,並保持這樣的源碼,還有模擬的Service層使用log註解,接下來咱們編譯一下項目,看看對應生成的class文件是怎麼樣的。
這裏咱們能夠看到,編譯出來的class文件與源碼是不同的,Lombok幫咱們進行了改變。
package com.example.lombok.pojo; import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 5965420331615591278L; private Integer id; private String name; private String password; public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } public void setPassword(String password) { this.password = password; } public Person(Integer id, String name, String password) { this.id = id;this.name = name;this.password = password; } public boolean equals(Object o) { if (o == this) { return true; } if (!(o instanceof Person)) { return false; } Person other = (Person)o; if (!other.canEqual(this)) { return false; } Object this$id = getId();Object other$id = other.getId(); if (this$id == null ? other$id != null : !this$id.equals(other$id)) { return false; } Object this$password = getPassword();Object other$password = other.getPassword();return this$password == null ? other$password == null : this$password.equals(other$password); } protected boolean canEqual(Object other) { return other instanceof Person; } public int hashCode() { int PRIME = 59;int result = 1;Object $id = getId();result = result * 59 + ($id == null ? 43 : $id.hashCode());Object $password = getPassword();result = result * 59 + ($password == null ? 43 : $password.hashCode());return result; } public String toString() { return "Person(password=" + getPassword() + ")"; } public Integer getId() { return this.id; } public String getName() { return this.name; } public String getPassword() { return this.password; } public Person() {} }
package com.example.lombok.service; import com.example.lombok.pojo.Person; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PersonServiceImpl { private static final Logger log = LoggerFactory.getLogger(PersonServiceImpl.class); public Person findOne() { log.info("findOne success"); return new Person(); } }
若是本對你有幫助,歡迎關注本人技術公衆號,或者點贊,謝謝。