簡體   English   中英

如何在 Lombok 的 class 構造函數中使用 @Lazy 注釋?

[英]How to use @Lazy annotation in a class constructor with Lombok?

給定一個 class 的 AnimalService:

public class AnimalService{

      private DogService dogService;

      private AnimalService(@Lazy DogService dogService){
          this.dogService = dogService;
      }
    }
}

在這種情況下,如果我想使用 Lombok 注釋,有沒有辦法保持 @Lazy 加載?

下面的代碼會和上面的代碼一樣嗎?

@AllArgsConstructor
public class AnimalService{
  @Lazy
  private DogService dogService;
}

@Lazy
public class DogService{
//code
}

這是在 Lombok 中使用 @Lazy 注釋的合適方法嗎?

它不會開箱即用,但您可以配置 Lombok 以將@Lazy注釋從字段復制到構造函數的參數。

lombok.config

lombok.copyableAnnotations += org.springframework.context.annotation.Lazy

lombok.config應該放在項目的根目錄或 src 文件夾中。

如果您只希望它用於單個類而不執行全局 Lombok 配置,則可以使用以下代碼段:

@AllArgsConstructor(onConstructor = @__(@Lazy))
public class AnimalService{
  @Lazy
  private DogService dogService;
}

您可以使用:

@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class A {
  private final B b;

  //or use this
  //@Lazy
  //private final B b;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM