너와 나의 프로그래밍
Spring Framework - Annotation 기반 설정 - 2 본문
[Spring] Annotation 기반 설정 - 2
스프링에서 의존성 주입을 지원하는 어노테이션으로는 @Autowired, @Qualifier, @Inject, @Resource등이 있다.
이 중 @Autowired와 @Qualifier는 스프링에서 제공하나 나머지 2개는 지원하지 않는다.
(@Autowired와 @Qualifier는 org.springframework, @Inject는 javax.annotaition, @Resource는 javax.Inject에서 지원한다.)
스프링 프레임워크에서 지원하는 어노테이션 2가지를 알아보려고 한다.
@Autowired
@Autowired는 생성자, 메소드, 맴버변수 위에 모두 사용할 수 있다. 주로 맴버변수 위에 설정하며, 해당 타입의 객체를 찾아서 자동으로 할당한다. 타입의 객체가 메모리에 존재하는지 체크한 후에 그 객체를 변수에 주입한다.
먼저 Engine 맴버 변수 위에 @Autowired를 설정한다.
@Autowired를 사용하기 위해서는 사용하는 클래스를 bean으로 등록해줘야 한다. xml 파일에 <bean> 엘리먼트를 사용해도 괜찮고 @Component 어노테이션을 설정해 줘도 괜찮다.
@Qualifier
만약 의존성 주입 대상이 되는 타입의 객체가 두 개 이상일 때는 어떻게 활용을 할까?? 객체가 모두 메모리에 생성되어 있는 상황이라면 컨테이너는 어떤 객체를 할당해야될지 몰라 에러가 발생한다. (NoUniqueBeanDefinitionException 에러가 나옴.)
이때 @Autowired와 @Qualifier("name") 어노테이션을 이용해 특정 객체의 의존성 주입을 할 수 있다.
먼저 @Component("") 어노테이션을 사용해 컴포넌트화 시켜준다.
그 후 Engine의 대한 맴버변수 위에 @Autowired 어노테이션과 함께 @Qualifier("") 어노테이션을 각각 설정해 자신이 사용하고 싶은 객체의 대한 의존성 주입이 가능하다.
'Back-End > Spring Framework' 카테고리의 다른 글
Spring Framework - AOP Element와 Advice (0) | 2020.08.05 |
---|---|
Spring Framework - Spring AOP의 개념과 용어 (0) | 2020.07.27 |
Spring Framework - Annotation 기반 설정 - 1 (2) | 2020.07.11 |
Spring Framework - 의존성 주입 방식 (0) | 2020.07.08 |
Spring Framework - 스프링 컨테이너(Spring Container) (0) | 2020.07.06 |