본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 7. 의존관계 자동 주입] 애노테이션 직접 만들기 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 7. 9.
728x90
반응형

이번 시간에는 애노테이션을 직접 만드는 시간을 가졌다.

 

@Qualifier("mainDiscountPolicy") 이렇게 적으면 mainDiscountPolicy는 문자이기 때문에 컴파일 시 타입 체크가 안된다.

그렇기 때문에 어노테이션을 만들어서 관리할 수 있다.

 

패키지를 생성하고 그 패키지에 애노테이션을 생성해준다.

 

그리고 Ctrl + N으로 Qualifier에 들어가서 드래그 된 부분을 복사해준다.

 

MainDiscountPolicy 어노테이션에 붙여넣기 해주고, 추가로 @Qualifier 어노테이션을 추가해준다.

반응형

하지만 Qualifier 어노테이션은 문자열로 받아주기 때문에,

 

받는 문자열이 잘못되더라도 동작은 하지만, 실행시키면 그때 오류가 발생할 것이다.

 

그런 상황을 방지하기 위해 아까 만들어 둔 MainDiscountPolicy 어노테이션을 추가해준다.

 

이제는 어노테이션 이름이 잘못되면 바로 오류를 보여주기 때문에 안정성이 높아진다.

 

MainDiscountPolicy를 가져다 쓰는 곳에서도 똑같이 MainDiscountPolicy 어노테이션을를 추가해준다.

 

MainDiscountPolicy 어노테이션에 들어가보면 Qualifier가 있기 때문에 Qualifier 같은 역할을 해준다.

 

추가로, 어노테이션명에 커서를 대고 Ctrl + B를 하면 현재 이 어노테이션을 사용중인 코드들을 확인할 수 있다.

 

정리하자면, 어노테이션은 상속이라는 개념이 없고, 이렇게 여러 어노테이션을 모아서 사용하는 기능은 스프링이 지원해주는 기능이다.

@Qualifier 뿐만 아니라 다른 어노테이션들도 함께 조합해서 사용할 수도 있다.

단적인 예로, @Autowired도 재정의해서 쓸 수도 있다.

물론 스프링이 제공하는 기능을 특정한 목적없이 무분별하게 재정의를 한다면, 유지보수에 혼란만 가중시킬 수 있기 때문에, 가능하면 그대로 쓰는것을 추천..ㅎㅎ

728x90
반응형

댓글