본문 바로가기
Programming/삽질일기

[SPRING] @Qualifier : 동일한 이름의 bean이 존재한다면?

by kghworks 2022. 1. 14.
@Component
public class Car{

	...

}


public class Ray implements Car{

	...
    
}

public class Genesis implements Car{

	...

}

public class test{

	@Autowired
    private Car car;
    
    ...
}

 레이, 제네시스 둘다 Car.java를 구현했다. 그리고 test.java에서 car객체의 의존성 주입을 했고,

컨테이너 초기화시 Exception을 발생했다!

 

 

 이는 컨테이너가 car를 빈으로 등록하려하자 등록할 수 있는 후보가 여러개이기 때문에 발생한다. 

이를 해결해주는 어노테이션이 @Qualifier이다.

 

@Component
public class Car{

	...

}

@Qualifier("ray") //qualifier로 식별자(bean id)를 ray로 지정
public class Ray implements Car{

	...
    
}

@Qualifier("genesis") //qualifier로 식별자(bean id)를 genesis로 지정
public class Genesis implements Car{

	...

}

public class test{

	@Autowired
    @Qualifier("genesis") //qualifier의 식별자가 genesis인 bean을 주입해주세요.
    private Car car;
    
    ...
}

 

 

* 주의점

- @Qualifier안에서 명시한 값(식별자)를 가진 객체가 없다면 Exception 발생

댓글