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;