강의

멘토링

로드맵

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

anthologia님의 프로필 이미지
anthologia

작성한 질문수

스프링 핵심 원리 - 기본편

애노테이션 직접 만들기

@Quailfier의 컴파일시 타입 체크 질문

작성

·

308

1

안녕하세요.

항상 좋은 강의로 지식을 공유해주셔서 감사합니다.

 

수업을 듣다가 의문이 드는 부분이 생겨 질문드립니다!

 

@Qualifier("mainDiscountPolicy") 와 같이 문자를 적으면 컴파일시 타입 체크가 안된다고 하셨습니다.

 

그러나 이를 스프링 덕분에 상속받아 @MainDiscountPolicy 를 만들면, 해당 문제를 해결할 수 있다고 하셨습니다.

 

'@MainDiscountPolicy도 결국엔 @Qualifier("mainDiscountPolicy")를 감싸기만 할 뿐 큰 차이가 없지 않을지 않을까?' 라는 생각이 드는데, 두 번째 방법을 사용할 경우, 어떻게 컴파일시 타입 체크가 가능해지나요?

 

감사합니다!

퀴즈

필드 주입(Field Injection) 방식이 일반적으로 권장되지 않는 이유는 무엇일까요?

불변성을 보장하기 어려워서

의존성 변경이 쉬워서

순수 Java 코드로 테스트하기 어려워서

설정 코드 작성이 복잡해서

답변 1

1

안녕하세요. anthologia님, 공식 서포터즈 OMG입니다.

@Qualifier("mainDiscountPolicy") 대신 @Qualifier("nainDiscountPolicy") 으로 입력하였을 경우 

문자열이기 때문에 타입체크가 불가능한 반면,

 @MainDiscountPolicy 대신  @NainDiscountPolicy로 입력하였을 경우 사전에 등록되어 있는 에노테이션이 없기 때문에 타입체크가 가능해짐을 설명하신 것이며

본 강의 1분 45초 경 영한님 설명을 적어볼게요.

"이 에노테이션(@MainDiscountPolicy)을 쓰면 스프링 컨테이너 안에서는 요 기능(아래 이미지 드래그 영역)이 다 동작합니다. " 라고 설명해주십니다.

@Qualifier의 동작을 가져가면서 컴파일 시 타입체크가 가능함을 설명하신 것으로 보시면 됩니다.

 



감사합니다.

anthologia님의 프로필 이미지
anthologia
질문자

아하, 저는 @NainDiscountPolicy 를 등록하고, 사용할 경우에도 사전 정의된 NainDiscountPolicy 라는 타입이 없으므로 컴파일 오류를 내준다. 라고 이해했었습니다! 그래서 이게 가능한가...? 라고 생각해서 질문드렸는데 용례를 알려주셔서 잘 이해했습니다! 감사합니다 😊

anthologia님의 프로필 이미지
anthologia

작성한 질문수

질문하기