롬복을 사용하고 있습니까? 클래스에는 Annotation 매개변수가 있는 생성자가 필요하지 않습니다. Lombok의 클래스 생성자에서 @Lazy 주석을 사용하는 방법은 무엇입니까?

4650 단어 lomboktutorialjava
롬복으로 해결하는 방법을 생각하고 계십니까?

@Service
public class SomeService {
  private final OtherService otherService;

  public SomeService (@Lazy OtherService otherService) {
    this.otherService = otherService;
  }
}

다음과 같이 롬복을 사용하고 싶습니다.

@Service
@RequiredArgsConstructor
public class SomeService {
  @Lazy private final OtherService otherService;
}

그러나 @Lazy 주석이 작동하지 않습니다. lombok은 필드 주석으로만 표시됩니다.
하지만 이 답변을 찾았고 많은 도움이 되었습니다.




Lombok의 클래스 생성자에서 @Lazy 주석을 사용하는 방법은 무엇입니까?



19년 12월 27일
댓글: 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;
}


그러면 롬복은 다음과 같이 처리됩니다.

@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;
  }
}


잡았다!
행복한 코딩!

좋은 웹페이지 즐겨찾기