日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

学习Spring Boot:(十五)使用Lombok来优雅的编码

發(fā)布時(shí)間:2025/3/12 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习Spring Boot:(十五)使用Lombok来优雅的编码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

Lombok 是一種 Java? 實(shí)用工具,可用來幫助開發(fā)人員消除 Java 的冗長,尤其是對(duì)于簡單的 Java 對(duì)象(POJO)。它通過注解實(shí)現(xiàn)這一目的。

正文

添加依賴

在 pom.xml 文件中添加相關(guān)依賴:

<lombok.version>1.16.20</lombok.version><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope></dependency>

安裝插件

由于 Lombok 采取的注解形式的,在編譯后,自動(dòng)生成相應(yīng)的方法,為了不讓 ide 瘋了,需要下載插件了支持它。
以 idea 為例:查找插件 lombok plugin 安裝即可。

用我的 User 實(shí)體類為例(set,get,toString 方法),

@Getter @Setter @ToString public class SysUserEntity implements Serializable

在按快捷鍵 Ctrl + F12,可以查找到set,get,toString 方法。

注解

寫點(diǎn)常用的,其余的 api 的打開 Jar 包一目了然

@Getter
@Setter
@ToString
@EqualsAndHashCode
構(gòu)造函數(shù)
@AllArgsConstructor

會(huì)生成一個(gè)包含所有變量,同時(shí)如果變量使用了NotNull annotation , 會(huì)進(jìn)行是否為空的校驗(yàn),
全部參數(shù)的構(gòu)造函數(shù)的自動(dòng)生成,該注解的作用域也是只有在實(shí)體類上,參數(shù)的順序與屬性定義的順序一致。

@NoArgsConstructor

無參構(gòu)造函數(shù)

@RequiredArgsConstructor

會(huì)生成一個(gè)包含常量(final),和標(biāo)識(shí)了@NotNull的變量 的構(gòu)造方法。

怎么使用

它們都有三個(gè)參數(shù)可以設(shè)置

1.String staticName() default "";

如果設(shè)置了它,將原來的構(gòu)造方法的訪問修飾符將會(huì)變成 私有的,而外添加一個(gè)靜態(tài)構(gòu)造方法,參數(shù)相同,名字是設(shè)置的字符串的名字,訪問修飾符為公有的。

  • AnyAnnotation[] onConstructor() default {};
    在構(gòu)造方法上添加注解。使用方法@RequiredArgsConstructor(onConstructor=@__({@AnnotationsGoHere}))}

    例如我們在 Spring 項(xiàng)目中需要注入多個(gè)值,寫很多個(gè) @Autowired 很麻煩,就可以使用這種方式:

    @Service @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class UserServiceImpl implements IUserService {private final IUserRepository userRepository;private final IOrderRepository orderRepository;………………
  • AccessLevel access() default lombok.AccessLevel.PUBLIC;
    構(gòu)造函數(shù)訪問修飾符;

  • @NoArgsConstructor無參構(gòu)造函數(shù)中還有個(gè)注解 boolean force() default false;
    作者的注釋是 If {@code true}, initializes all final fields to 0 / null / false. Otherwise, a compile time error occurs.

    設(shè)置為 true 的時(shí)候,初始化所有的參數(shù)為默認(rèn)值,否則編譯錯(cuò)誤。

  • @Data

    我自己嘗試了下,我們使用 @Data 注解就可以有下面幾個(gè)注解的功能: @ToString、@Getter、@Setter、@EqualsAndHashCode、@NoArgsConstructor 。

    注意的是,同時(shí)使用@Data 和 @AllArgsConstructor 后 ,默認(rèn)的無參構(gòu)造函數(shù)失效,如果需要它,要重新設(shè)置 @NoArgsConstructor

    @Slf4j
    //類上面注解了,直接調(diào)用 log 即可: log.info(xxxx);
    @Log

    使用的是 java.util.logging.Logger ,直接使用 變量 log。

    @Builder

    bulder 模式構(gòu)建對(duì)象。

    @Cleanup
    @Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream(args[1]);

    自動(dòng)化關(guān)閉流,相當(dāng)于 jdk1.7 種的 try with resource

    val

    類型推導(dǎo)。

    val example = new ArrayList<String>();example.add("Hello, World!");

    對(duì)應(yīng)的轉(zhuǎn)換后代碼就是:

    val example = new ArrayList<String>();example.add("Hello, World!");
    @NonNull
    public NonNullExample(@NonNull Person person) {this.name = person.getName();}

    轉(zhuǎn)換后就是:

    public NonNullExample(@NonNull Person person) {if (person == null) {throw new NullPointerException("person");}this.name = person.getName();}
    @SneakyThrows

    翻譯就是暗中拋出異常

    當(dāng)我們需要拋出異常,在當(dāng)前方法上調(diào)用,不用顯示的在方法名后面寫 throw

    @SneakyThrows(Exception.class)
    @Synchronized

    方法中所有的代碼都加入到一個(gè)代碼塊中,默認(rèn)靜態(tài)方法使用的是全局鎖,普通方法使用的是對(duì)象鎖,當(dāng)然也可以指定鎖的對(duì)象。

    private final Object lock = new Object(); @Synchronized("lock") public void foo() {// Do something }

    個(gè)人認(rèn)為這樣的閱讀起來比較麻煩,實(shí)際開發(fā)中往往將 synchronized 顆粒化到代碼塊中。

    總結(jié)

    以上是生活随笔為你收集整理的学习Spring Boot:(十五)使用Lombok来优雅的编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。