웹 서비스에 대한 작업 호출이 있습니다.Spring Bean을 하위 클래스로 바꿀 때 오류가 발생했습니다.
테스트 목적으로@ManagedResource(objectName = "bean:name=XServiceMBean")
@Service("xService")
public class XServiceImpl implements XService
{
// working code here
}
, 나는이 클래스를 확장하고 대신 하나의 서브 클래스를 삽입하고 싶은, 그래서 만든 : 우리는 주석으로 구성된 봄 콩 웹 서비스를 호출하는 로직을 구현
@ManagedResource(objectName = "bean:name=XServiceMBean")
@Service("xService")
public class XServiceImplTest extends XServiceImpl
{
// working code here
}
및 수퍼 클래스의 두 주석 행을 주석 처리했습니다.
봄 좋아하지 않아요. 내가 실행할 때 내가 얻을 :
Error creating bean with name 'xService':Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'xService' must be of type [com.hsc.correspondence.rules.XService], but was actually of type [com.hsc.correspondence.rules.impl.XServiceImplTest]
내가 다시 같은 결과로, 내 서브 클래스에하는 Xservice를 구현 "명시 적 퍼팅 시도
가내가 봄에 불법적 인 일을하고 있습니까 는 원래 XServiceImpl가있다 .? @Resource 주석의 개수가 중요하다고 생각하지 않았고 이전에했던 것처럼 주입 할 것으로 예상했습니다.
테스트 할 수있는 방법이 있습니까? 클래스는 원본에 대한 절대적인 최소화 된 변경 사항을 가지고 있습니까? (필자가 진행중인 프로젝트에서 이러한 결정을 내리지 만 제외하고는 XML로 구성하는 것이 좋습니다. 내가하려는 일이 중요 할 거라고 생각하지 않았어.
추가 당황 : 오류 메시지가 "콩 유형 ...하는 Xservice이어야합니다 '하는 Xservice을'이라는, 실제로 형 XServiceImplTest의했다"말했다. 그러나 XServiceImplTest는 XServiceImpl처럼 XService를 구현합니다.
추가 퍼즐 # 2 : 전체 XServiceImpl을 클래스 XServiceImplTest에 복사하고, XServiceImpl에서 주석을 주석 처리하고, 정리하고 다시 작성하여 실행했습니다. 같은 결과가 나왔습니다. 이제 두 클래스의 유일한 차이점은 클래스 이름입니다. 그것은 낯선 사람과 낯선 사람이됩니다. 누구나 스프링이 클래스 이름이 무엇인지 신경 쓸 수 있다고 제안 할 수 있습니까?
추가 퍼즐 # 2 ... XServiceImplTest 클래스에서 "extends XServiceImpl"을 제거 했습니까? – fmodos
예, 확인해 주셔서 감사합니다. – arcy