Spring/Spring Core

애노테이션 직접 만들기

민철킹 2021. 3. 21. 18:57

@Qualifier("mainDiscountPolicy") 이렇게 코드를 작성하면 컴파일시 타입 체크가 안된다.

컴파일 중에 오류를 잡을 수가 없다는 의미이다.("mainnDiscountPolicy"라고 오타를 내도 컴파일은 되고 그 이후에 Exception이 발생한다.)

 

 

이를 애노테이션을 만들어서 해결해보자.

위와 같이 "mainDiscountPolicy"를 Qualifier로 가지는 애노테이션을 생성하였다.

이제 우리는 @MainDiscountPolicy를 가져다가 사용하면 되는 것이다. 위와같이 오타를 발생하면

컴파일 전에 오류를 잡아낼 수 있어진다.

이제 OrderServiceImpl의 생성자 주입에 우리가 만든 애노테이션을 넣어주면 스프링이 어떤 타입의 할인정책을 사용해야하는지 알게되는 것이다.

 

테스트를 실행시켜보면 그동안 작성한 테스트 코드 31개가 모두 정상적으로 성공하는 것을 확인할 수 있다.


애노테이션에는 상속이라는 개념이 없다. 이렇게 여러 애노테이션을 모아서 사용하는 기능은 스프링이 지원해주는 기능이다. @Qualifier 뿐 아니라 다른 애노테이션들도 함께 조합해서 사용할 수 있다.

@Autowired도 재정의하여 사용할 수 있다. 하지만 스프링이 제공하는 기능을 뚜렷한 목적없이 무분별하게 재정의하는 것은 유지보수에 더 큰 혼란을 가져온다.

반응형