2015-04-30 17 views
0

这里是低于如何@Service弹簧延长,NoUniqueBeanDefinitionException

@Service("testService") 
public class TestService { 

    public String something() { 
     return "abc"; 
    } 

} 

我要扩展类,并让容器知道它需要从现在开始拿起我的扩展类的样本类。

@Service("extendedTestService") 
public class ExtendedTestServiceMock extends TestService { 

    @override 
    public String something() { 
     return "xyz"; 
    } 

} 

测试类

public class TestClass extends SpringTest { 

    @Autowired 
    @Qualifier("extendedTestService") 
    private ExtendedTestServiceMock testService; 

    public void testMethod(){ 
     ...... 
    } 

} 
 
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [TestService] is defined: expected single matching bean but found 2: ExtendedTestServiceMock,testService 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:865) ~[spring-beans-3.2.8.RELEASE.jar:3.2.8.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) ~[spring-beans-3.2.8.RELEASE.jar:3.2.8.RELEASE] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) ~[spring-beans-3.2.8.RELEASE.jar:3.2.8.RELEASE] 
    ... 91 common frames omitted 

如何解决呢?

+2

删除'@Service(“extendedTestService”)中的空白' – Jens

+1

您确定这是错误来自哪里的代码吗?我会说,必须有另一种说法。你在哪里自动编写'TestService' – Jens

+0

谢谢Jens,是的,我的测试用例就是这样。 – Mike

回答

0

您尚未定义类型为ExtendedTestService的bean。

您只定义了一个类型为ExtendedTestServiceMock的bean。

试试这个:

@Autowired 
@Qualifier("extendedTestService") 
private TestService testService; 
+0

感谢您的回答,我认为这是一个写有问题的错误, – Mike

0

的解决方案是使用@Service anotation,你应该注入的服务是这样的:

@Autowired private TestService testService;

然后你就可以使用TestService的

的方法