あなたはロンボクを使用していますか?あなたのクラスは、パラメータ注釈を持つコンストラクターを必要としません.Lombokを持つクラスコンストラクタにおける@ lazyアノテーションの使用法


あなたはロンボクとそれを解決する方法を考えですか?
@Service
public class SomeService {
  private final OtherService otherService;

  public SomeService (@Lazy OtherService otherService) {
    this.otherService = otherService;
  }
}
私は、このようにLombokを使いたいです:
@Service
@RequiredArgsConstructor
public class SomeService {
  @Lazy private final OtherService otherService;
}
でも@Lazy 注釈は動作しません.ロンボクは、フィールドの注釈としてマークされます.
しかし、私はこの答えを見つけました、そして、それは大いに助けました:

Lombokを持つクラスコンストラクタにおける@ lazyアノテーションの使用法


Dec 27 ' 19
コメント: 2
回答:1
7

クラスAnimalService :
public class AnimalService{

      private DogService dogService;

      private AnimalService(@Lazy DogService dogService){
          this.dogService = dogService;
      }
    }
}
この場合、私はLombokの注釈を使用したい場合は、@ lazy読み込みを維持する方法がありますか?
次のコードは上記のコードと同じですか?
Open Full Question
はい.クリエイトlombok.config プロジェクトのルートでこの行を追加します.
lombok.copyableAnnotations += org.springframework.context.annotation.Lazy
または、この行をコピーし、@Value , @Qualifier またはあなたが欲しい.(注意:完全な注釈署名を使用してください!)
そして、アノテーションの作業を心配しないでくださいとロンボクを使用してください!
@Service
@RequiredArgsConstructor
public class SomeService {
  @Lazy private final OtherService otherService;
}
その後、Lombokは次のように処理されます.
@Service
public class SomeService {
  // 30 Sep, 2021: Annotation still remains because of copyableAnnotations.
  @Lazy private final OtherService otherService;

  public SomeService (@Lazy OtherService otherService) {
    this.otherService = otherService;
  }
}
ちゃ!
ハッピーコーディング!