Spring 의 주해 @ Qualifier 소결
최근 스프링 의 주 해 를 정리 하고 있 습 니 다. 현재 발생 한 문 제 를 기록 하여 같은 문제 에 부 딪 힌 어린이 신발 로 해결 할 수 있 도록 하 겠 습 니 다 ~
먼저 장면 을 설명 하고 코드 는 다음 과 같다.
다음 과 같은 인터페이스 가 있 습 니 다.
public interface EmployeeService {
public EmployeeDto getEmployeeById(Long id);
}
다음 과 같은 두 가지 실현 유형 이 있 습 니 다. Employee ServiceImpl 과 Employee ServiceImpl 1:
@Service("service")
public class EmployeeServiceImpl implements EmployeeService {
public EmployeeDto getEmployeeById(Long id) {
return new EmployeeDto();
}
}
@Service("service1")
public class EmployeeServiceImpl1 implements EmployeeService {
public EmployeeDto getEmployeeById(Long id) {
return new EmployeeDto();
}
}
호출 코드 는 다음 과 같 습 니 다:
@Controller
@RequestMapping("/emplayee.do")
public class EmployeeInfoControl {
@Autowired
EmployeeService employeeService;
@RequestMapping(params = "method=showEmplayeeInfo")
public void showEmplayeeInfo(HttpServletRequest request, HttpServletResponse response, EmployeeDto dto) {
#
}
}
tomcat 타 임 스 를 시작 하 는 중 다음 과 같은 오류 가 발생 했 습 니 다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeInfoControl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.test.service.EmployeeService com.test.controller.EmployeeInfoControl.employeeService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.test.service.EmployeeService] is defined: expected single matching bean but found 2: [service1, service2]
사실 오 류 를 보고 하 는 정 보 는 이미 명확 하 게 말 했다. autoware 에서 두 가지 유형 이 EmployeService 인 터 페 이 스 를 실현 하기 때문에 Spring 은 어떤 실현 유형 을 연결 해 야 할 지 몰라 서 위 와 같은 오 류 를 던 졌 다.
이 럴 때 @ Qualifier 주 해 를 사용 해 야 합 니 다. qualifier 는 합격 자 라 는 뜻 입 니 다. 이 표 시 를 통 해 어떤 실현 류 가 우리 가 필요 로 하 는 지 보 여 줍 니 다. 우 리 는 호출 코드 를 수정 하고 @ Qualifier 주 해 를 추가 합 니 다. 주의해 야 할 것 은 @ Qualifier 의 매개 변수 이름 은 반드시 우리 가 이전에 정의 한 @ Service 주해 의 이름 중 하나 입 니 다!
@Controller
@RequestMapping("/emplayee.do")
public class EmployeeInfoControl {
@Autowired
@Qualifier("service")
EmployeeService employeeService;
@RequestMapping(params = "method=showEmplayeeInfo")
public void showEmplayeeInfo(HttpServletRequest request, HttpServletResponse response, EmployeeDto dto) {
#
}
}
문제 해결!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.