No qualifying bean of type is defined: expected single matching bean but found 2
최근 Spring 의 주석 에서 Bean 을 가 져 오 려 고 시도 하 는 중 문제 와 같은 오류 가 발생 했 습 니 다.
NoUniqueBeanDefinitionException: No qualifying bean of type is defined: expected single matching bean but found 2:sysRoleManage, sysRoleManageImpl
나 는 두 가지 종류 가 있 는데, 하 나 는 인터페이스 이다.
public interface SysRoleManager{
//............
}
다른 하 나 는 이 인터페이스의 실현 클래스 입 니 다.
@Compnent
public class SysRoleManagerImpl implements SysRoleManager{
//............
}
bean 을 가 져 오 려 고 시도 할 때:
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletContext);
SysRoleManager manager = ctx.getBean(SysRoleManager.class);
System.out.println(manager);
문제 와 같은 잘못 을 얻다.
해결 방법 은 실현 류 에 대한 주 해 를 좀 더 상세 하 게 하고 다음 과 같이 바 꿔 야 한다.
@Service("sysRoleManager")
public class SysRoleManagerImpl implements SysRoleManager{
//............
}
이렇게 하면 문 제 를 해결 하고 인쇄 할 수 있 습 니 다.
com.xx.xxx.SysRoleManagerImpl@179e64
실현 류 를 얻 었 다 는 뜻 이다.
또는 Spring 컨 텍스트 를 통 해 얻 지 않 고 주 해 를 통 해 직접 얻 을 수 있 습 니 다.
@Autowire
@Qualifier("sysRoleManager ")
private SysRoleManager manager;
여러 개의 실현 클래스 가 같은 인 터 페 이 스 를 실현 하려 면 각 실현 클래스 에 서로 다른 @ Service ("name") 를 주석 해 야 합 니 다. name 은 서로 다른 값 입 니 다.
hibenate 의 이상 을 추가 합 니 다. 예 를 들 어...
org.hibernate.HibernateException: identifier of an instance
of org.cometd.hibernate.User altered from 12 to null。
그것 은:
1) 주석 을 달 때 홈 키 가 아 닌 필드 에 @ NaturalId 등 홈 키 생 성 정책 을 설정 하 였 습 니까?
2) 메 인 키 를 한 트 랜 잭 션 에서 업데이트 하 였 는 지, 메 인 키 는 업데이트 할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.