상황
main.java
파일
ApplicationContext context = new AnnotationConfigApplicationContext("com.blidkaga");
UserRepository userRepository = context.getBean(UserRepository.class);
UserRepositoryImpl
파일
package com.blidkaga.repository;
import com.blidkaga.model.User;
import org.springframework.stereotype.Component;
@Component
public class UserRepositoryImpl implements UserRepository {
@Override
public User save(User user) {
return user;
}
@Override
public int countByUsername(String username) {
return 1;
}
}
- jar 실행 시아래와 같은 에러 발생
Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.blidkaga.repository.UserRepository' available: expected single matching bean but found 2: userRepositoryImpl,userRepository
원인
-
ApplicationContext context = new AnnotationConfigApplicationContext("com.blidkaga");
실행 시@Configuration
어노테이션이 걸려 있는 파일의 Bean도 중복으로 등록되었기 때문 AppConfig.java
- DI 컨테이너에
userRepository
과userRepositoryImpl
이 두 개가 등록되면서 생긴 문제
@Configuration
public class AppConfig {
@Bean
UserRepository userRepository(){
return new UserRepositoryImpl();
}
... 생략
}