인프런 커뮤니티 질문&답변
어노테이션 직접 만들기 질문입니다!
작성
·
404
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요!
어노테이션 직접 만들기에 대해 질문이 있습니다.
@Qualifier("mainDiscountPolicy") 를 사용하면 mainDiscountPolicy가 문자열이라 잘못 작성해도 컴파일시 에러가 나지 않는다는 단점을 해결하기 위해 에노테이션을 직접 만든다고 설명해주셨습니다.
@MainDiscountPolicy라는 어노테이션을 생성할때도 @Qualifier("mainDiscountPolicy")로 똑같이 문자열을 사용하는데, 어노테이션을 직접 만든다고 해서 mainDiscountPolicy 문자열에 오타를 내도 컴파일 에러가 안일어나지 않나요??
퀴즈
필드 주입(Field Injection) 방식이 일반적으로 권장되지 않는 이유는 무엇일까요?
불변성을 보장하기 어려워서
의존성 변경이 쉬워서
순수 Java 코드로 테스트하기 어려워서
설정 코드 작성이 복잡해서
답변 1
0
안녕하세요. givita_dev님, 공식 서포터즈 OMG입니다.
자바에서 문자열 상수를 지정할 때와 마찬가지로, 처음 선언 시에는 문자열을 입력하지만 이후에는 어노테이션을 직접, 바로 사용할 수 있습니다.
아래의 예시를 보시면, 처음 IP주소 선언을 문자열로 입력하였지만,
이후 사용하는 코드를 보면, 상수를 사용하여 문자열 입력을 하지 않고 사용하는 것을 확인 할 수 있습니다.
만약 IP주소를 변경해야 하는 경우, 처음 상수를 정의한 코드만 수정하면 되겠죠?
참고)
안녕하세요. givita_dev님
생각하신 내용이 맞습니다.
그래도 여러곳에서 사용한다고 가정하면 오류 확율은 아주 많이 줄어들겠지요?(이미 검증된 것을 사용하니까요.) 추가로 이름 변경이 필요할 때 한곳에서 변경해도 된다는 장점이 있습니다.






아아 넵, 상수에 대한 이해는 했습니다.
다만 제가 궁금했던점은,
@Qualifier("mainDiscountPolicy")을 사용할때 @Qualifier("mainnDiscountPolicy")로 n을 두번쳐서 오타를 조금이라도 내면, 어플리케이션 실행시 에러를 잡을 수 없기때문에 @MainDiscountPolicy를 만들어서 @MainnDiscountPolicy로 오타를 내면 어플리케이션 실행 전에 에러를 잡을 수 있다는 설명을 해주셨습니다.
@MainDiscountPolicy를 만들때도 @Qualifier("mainDiscountPolicy") 어노테이션을 내부적으로 사용하기 때문에, 이 부분에서도 오타를 내면 어플리케이션 실행 전에 에러가 발생하지 않는다고 생각돼서 질문 드렸습니다.
결론은, 어노테이션을 직접 만들어 사용한다고 어플리케이션 실행 전에 오타 오류를 확인할 수 없지 않나 라는 의문점이 듭니다.