강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

유진이님의 프로필 이미지
유진이

작성한 질문수

스프링 핵심 원리 - 기본편

@Autowired 필드 명, @Qualifier, @Primary

@Qualify, @Primary보다 @Autowired + @RequiredArgsConstructor이 최고의 방법 아닌가요?

작성

·

375

0

안녕하세요. 강의를 듣는 중 두 가지 궁금한 점이 생겨서 질문 남기게 됐습니다.

 

1. 제목의 내용과 같습니다. 쉽게 말해 두 개 이상의 동일한 타입의 빈이 등록 돼 있을 경우 아래와 같이 사용할 수 있더군요.

여기서 보면 RequiredArgsConstructor를 통해 두 final 변수를 매개변수로 생성자를 생성했습니다. 그리고 필드 명을 fixDiscountPolicy로 바꿔주므로써 DiscountPolicy 타입으로 등록된 두개의 빈 중 fixDiscountPolicy가 선택돼 주입되도록 했습니다.

이 방법이 최고의 방법이라고 생각한 이유는 DiscountPolicy에 의존하므로써 추상화에만 의존하는 법칙을 지키면서 해당 구현체로 뭘 쓰고 있는지 변수명으로 파악이 가능하기 때문입니다.

이 부분에 대해서 생각한 부분이 맞는지 궁금합니다.

 

2. @RequiredArgsConstructor를 사용하면 @Qualifier를 쓸 수 없나요? 

 

감사합니다.

퀴즈

What are the main reasons why Field Injection is generally not recommended?

Because it is difficult to guarantee immutability

Because changing dependencies is easy

Because it's difficult to test with pure Java code

Because writing configuration code is complex

답변 2

0

안녕하세요. 유진이님, 공식 서포터즈 David입니다.

2. 아래 글 답변을 참고해주세요.

https://www.inflearn.com/questions/71872

감사합니다.

0

유진이님의 프로필 이미지
유진이
질문자

다시 생각해보니 1번이 최고의 방법은 될 수 없겠군요.. 오히려 최악이 될 수 있겠네요.. 해당 클래스에 변수가 사용된 부분을 모두 같이 고쳐줘야 하는 문제가 있네요. 

유진이님의 프로필 이미지
유진이

작성한 질문수

질문하기