Вы думаете, как решить эту проблему с ломбоком?
@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; }
но @Ленивый
аннотация не будет работать. ломбок будет помечен как просто аннотация поля. но я нашел этот ответ, и это очень помогло:
Дан класс обслуживания животных:
public class AnimalService{ private DogService dogService; private AnimalService(@Lazy DogService dogService){ this.dogService = dogService; } } }
В этом случае, если я хочу использовать аннотации Ломбока, есть ли способ сохранить @ленивую загрузку?
Следующий код будет делать то же самое, что и приведенный выше код?
Да. создайте lombok.config
в корневом каталоге вашего проекта и добавьте эту строку.
lombok.copyableAnnotations += org.springframework.context.annotation.Lazy
или скопируйте эту строку и привяжите другую аннотацию, такую как @Value
, @Квалификатор
или ты хочешь. (примечание: используйте полную подпись аннотации!)
И не беспокойтесь о работе с аннотациями и используйте ломбок!
@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; } }
Попался! Счастливого Кодирования!
Оригинал: “https://dev.to/composite/are-you-using-lombok-your-classes-don-t-need-constructor-with-annotation-5480”