작성
·
4.9K
답변 5
14
안녕하세요. vkdlxj3562님^^
먼저 lombok이 제공하는 @RequiredArgsConstructor는 애노테이션 까지 함께 포함해서 생성자를 만들지는 않습니다.
그런데 가능한 방법이 있습니다.
1. src/main/java/lombok.config 파일을 만들어주세요.(resources가 아닙니다. src/main/java입니다!)
2. lombok.config에 다음 내용을 넣어주세요.
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
3. 프로젝트를 다시 컴파일 한 다음 실행해주세요. IntelliJ를 사용하면, out이라는 폴더가 있는데 이 폴더를 꼭! 모두 지우고 다시 실행해주세요. gradle은 gradlew clean을 한번 해주고 실행해주세요^^!
해당 옵션을 적용한 후에 빌드된 .class 파일을 확인해보면 다음과 같이 @Qulifier가 포함 된 것을 확인할 수 있습니다.
public OrderService(@Qualifier("mainDiscountPolicy") DiscountPolicy mainDiscountPolicy, @Qualifier("orderRepository") OrderRepository orderRepository) {
this.mainDiscountPolicy = mainDiscountPolicy;
this.orderRepository = orderRepository;
}
도움이 되셨길 바래요^^
7
2
1
안녕하세요. 창재님
생각하신 내용이 맞습니다. 내가 어떤 빈을 주입해야 하는지 직접 지정하기 때문에 의존하는 것이 맞습니다. 편리함과 유연성을 어느정도는 둘중에서 선택해야 하는 것으로 이해하시면 됩니다.
물론 인터페이스에 의존하고 또 외부에서 @Qualifier의 대상이 되는 빈 자체를 외부에서 스프링 빈을 등록하는 부분을 변경해서 바꿀 수 있기 때문에 클래스에 직접 의존하는 것 보다는 유연성을 가지게 됩니다.
감사합니다.