오류 정리 ( 같은 실수 하지 말자)

available: expected single matching bean but found 2

Reload0213 2021. 12. 9. 15:48

Spring @Autowired 어노테이션을 사용하여 자동주입을 하게 될 때 위와 같은 오류가 발생하게 되는데 이는 동일한 타입의 Bean객체가 2개가 있어 어떻게 주입을 해야할지 모르기 때문에 뜨는 에러이다.

 

해결 방법은 2가지

 

1. @Primary

 

2. @Qualifier

 

 

 

1.@Primary

 

동일한 타입의 여러 Bean 중에 @Primary 어노테이션을 붙여준다. 그럼 해당 어노테이션이 붙은 Bean 이 우선권을 받게되어 프로그램 실행시 동일한 타입의 bean들을 구분하여 해당 Bean으로 주입해준다. 

ex)

@PriMary
@Repository
public class AhnndigRepository implments Repository {
..........

}

 

2. @Qualifier

 

 

이는 @Autowired(DI해주는 곳) 어노테이션이 붙는 곳에 @Qualifier 어노테이션을 붙여준다. 단 @Quilifier만 하면 안되고 @Quilifie("id 명")으로 특정 id를 입력해주어 동일한 타입의 bean을 구분해준다.

@Qualifier("ahnddingRepository")
@Autowired
private Repository repository;

 

 

 

 

 

참고 = https://docs.spring.io/spring-framework/docs/3.1.x/spring-framework-reference/html/beans.html#beans-autowired-annotation