본문 바로가기
IT/spring

스프링 @Qualifier

by 뉴코딩맨 2023. 6. 15.
스프링 프레임워크에서 @Qualifier는 의존성 주입 시 특정 빈을 선택하는 데 사용되는 애노테이션입니다. 같은 타입의 여러 빈이 존재할 때 @Qualifier를 사용하여 원하는 빈을 명시적으로 지정할 수 있습니다. @Qualifier에 대해 자세히 알아보고, 실제 예시를 통해 설명하겠습니다.

 

 

@Qualifier 애노테이션

스프링은 기본적으로 타입을 기반으로 의존성 주입을 수행합니다. 하지만 같은 타입의 여러 빈이 존재할 경우 어떤 빈을 주입해야 할지 스프링이 판단하기 어렵습니다. 이런 상황에서 @Qualifier 애노테이션을 사용하여 명시적으로 어떤 빈을 주입할지 지정할 수 있습니다.
 
 

@Qualifier 사용법

@Qualifier를 사용하려면 먼저 해당 빈에 이름을 지정해야 합니다. 빈의 이름은 @Qualifier와 함께 사용되어 특정 빈을 식별하는 데 사용됩니다. 예를 들어, 다음과 같이 빈에 이름을 지정할 수 있습니다.
 
@Component("myBean")
public class MyBean {
	// ...
}
 
그리고 주입할 때 @Qualifier와 함께 빈의 이름을 지정하여 명시적으로 주입할 빈을 선택합니다. 예를 들어, 다음과 같이 @Qualifier를 사용하여 myBean이라는 이름의 빈을 주입할 수 있습니다.
 
@Autowired
@Qualifier("myBean")
private MyBean myBean;
 
이렇게 함으로써 @Qualifier를 사용하여 원하는 빈을 선택적으로 주입할 수 있습니다.

 

 

@Qualifier 예시

아래는 @Qualifier를 사용하는 예시입니다.
 
@Component("dog")
public class Dog implements Animal {
	// ...
}

@Component("cat")
public class Cat implements Animal {
	// ...
}

@Component
public class Zoo {
    @Autowired
    @Qualifier("dog")
    private Animal animal;

    // ...
}
 
위의 예시에서 Dog와 Cat은 Animal 인터페이스를 구현하는 두 개의 빈입니다. Zoo 클래스에서 @Autowired와 @Qualifier를 사용하여 dog라는 이름의 빈을 주입하고 있습니다. 이렇게 하면 Zoo 클래스는 Dog 빈을 주입받을 수 있습니다.
 
 

결론

@Qualifier는 스프링에서 같은 타입의 여러 빈 중에서 특정한 빈을 선택적으로 주입하는 데 사용됩니다. @Qualifier를 통해 의존성 주입 시 원하는 빈을 명시적으로 지정할 수 있으며, 이를 통해 애플리케이션의 유연성과 확장성을 향상시킬 수 있습니다.
 

댓글