1. 程式人生 > 實用技巧 >SpringCloud-Ribbon:認識並配置負載均衡

SpringCloud-Ribbon:認識並配置負載均衡

Lombok

Lombok介紹

官網

https://projectlombok.org/

Lombok是什麼

Lombok 是一種 Java™ 實用工具,可用來幫助開發人員消除 Java 中的冗長程式碼,尤其是對於簡單的 Java 物件(POJO),它通過註解實現這一目的。

原理

JSR 269:外掛化註解處理API(Pluggable Annotation Processing API)

JDK6提供的特性,在 Javac編譯期利用註解搞事情

安裝Lombok

匯入依賴

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>

安裝IDEA外掛

  1. File > Settings > Plugins

  2. 搜尋 Lombok進行安裝

Lombok常用註解

@NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor

  1. @NoArgsConstructor : 用於生成空參建構函式

  2. @RequiredArgsConstructor :用於生成被final、@@NonNull修飾的欄位的建構函式

  3. @AllArgsConstructor :用於生成全參建構函式

@Getter / @Setter

  1. 用於給生成get、set方法。

  2. 可以作用在類上和成員變數上。

  3. 可以通過AccessLevel修改方法的訪問修飾符,所以對不需要生成get、set方法的成員變數,在其上方新增@Getter(AccessLevel.NONE)@Setter(AccessLevel.NONE)即可。

  4. 該註解只作用於成員變數上,對被static修飾的變數,不會為其產生相對應的get、set方法,對被final修飾的變數,只會為其生成get方法。

@ToString

  1. 用於生成toString方法

  2. 只能作用於類上

  3. 排除某些欄位:@ToString(exclude = {"username","password"})

  4. 一定要包含某些欄位,如靜態變數:@ToString( of = {"username","password"})

@EqualsAndHashCode

  1. 用於生成equals、canEqual、hashCode方法

  2. 同樣可以使用exclude 和 of 來指定需要進行判斷欄位

@NonNull

  1. 用於生成判斷空值校驗語句

  2. 可以新增在方法引數列表中或者成員變數中

@Data

  1. 集成了四個註解,分別是@RequiredArgsConstructor、

@Getter / @Setter、@ToString、@EqualsAndHashCode

@Builder

  1. 構造內部類,實現流式程式設計

  2. DemoDataBuilder builder = DemoData.builder().string("String").date(new Date()).doubleData(3.14);

@Cleanup

常規寫法:

FileInputStream in = null;
FileOutputStream out = null;

try {
in = new FileInputStream("filepath");
out = new FileOutputStream("path2");
byte[] b = new byte[1000];

while (true) {
int r = in.read(b);
if (r == -1) {
return;
}

out.write(b, 0, r);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}

使用註解:

@Cleanup InputStream in = new FileInputStream("filepath");
@Cleanup OutputStream out = new FileOutputStream("path2");
byte[] b = new byte[1000];
while (true) {
int r = in.read(b);
if (r == -1) break;
out.write(b, 0, r);
}