너와 나의 프로그래밍

Spring Framework - Annotation 기반 설정 - 2 본문

Back-End/Spring Framework

Spring Framework - Annotation 기반 설정 - 2

Whatever App's 2020. 7. 12. 15:05

 

 

 

[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("") 어노테이션을 각각 설정해 자신이 사용하고 싶은 객체의 대한 의존성 주입이 가능하다.

 

 

 

반응형