반응형
No qualifying bean of type 'IManager' available: expected single matching bean but found 2: managerA,IManager
클래스명은 바꿨는데 이런 에러가 발생했다.
현재 상황은 인터페이스 IManager가 있고 구현체 ManagerA, ManagerB가 있는 상황
Profile값에 따라서 ManagerA가 Bean 생성되고 주입되고 ManagerB가 주입되고 하는 식으로 설정해놨다.
MaangerA와 ManagerB는 정상적으로 Profile에 따라 주입이 선택되고 있는 것 같은데
문제는 원체 알수가 없는 인터페이스 이름을 가지는 Bean이 자꾸 생긴다는 것
저러길래 managerA도 Bean에서 빼고 IManager만 있는 상태로 실행해봤다.
Bean 초기화 단계에서 에러가 안나고 넘어가버린다.
이후에 실행해보면 문제가 생기는데 아이바티스 에러가 뜬다?
와 이거 대체 왜이런거지 이해가 안가는데
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): managerA.initialize
그래서 두 클래스 @Component에 IManager라고 동일하게 이름을 지정해줬다.(저 가짜 빈을 없애버리려고)
그러니까 profile 변경했을때 주입 변경 잘되고 문제가 없다.
@Component("iManager") ManagerA
@Component("iManager") ManagerB
이 인터페이스를 Mapper라고 인식한거 같은데 대체 왜 이런거지?
마이바티스를 쓰기는 쓰는데 @Mapper를 안달았는데 왜 이걸 Mapper로 인식한건지 의문이다.
반응형
'백엔드 > SpringBoot' 카테고리의 다른 글
그래들에서 스프링부트로 라이브러리 만들기 (0) | 2022.12.14 |
---|---|
스프링부트 Jackson 라이브러리 날짜 타임존이 UTC로 변경되는 문제 (0) | 2021.02.26 |
SpringBoot Dependency 버전 맞추는 방법 (0) | 2021.01.12 |
[JPA] 영속성 전이 casecade 속성 (0) | 2020.12.26 |
Thymeleaf 템플릿 적용하기 (0) | 2020.12.20 |
댓글