没有类型异常的唯一bean。自动装配继承类的问题

时间:2013-06-14 09:36:41

标签: java exception autowired

我是Java代码的新手,我有一个关于自动装配服务接口的例外。

我必须使用A和B类.B从A扩展,每个类都有自己的服务。

@Service
@Qualifier("aService")
public interface AService {
    //Some methods
}

@Service
@Qualifier("bService")
public interface BService {
    //Some methods
}

我在某些类中使用这些接口,并且我已经添加了注释@Qualifer

public class Test() {

    @Autowired
    @Qualifier("aService")
private AService aService;

    @Autowired
    @Qualifier("bService")
private BService bService;

    //Some code
}

但我一直得到例外:

No unique bean of type [com.analysis.dw.AService] is defined : Unsatisfied dependency of type [interface com.analysis.dw.AService]: expected at least 1 matching bean

提前致谢:)

3 个答案:

答案 0 :(得分:2)

在课堂上使用注释,而不是界面!

@Service
@Qualifier("aService")
public class AServiceImpl implements AService {
    //Some methods
}

Spring不会实例化接口。

答案 1 :(得分:0)

删除

@Qualifier 
来自AService和BService接口的

注释。

查看哪些bean实现了AService接口。

在实现接口AService的bean之间,在字段中选择要在类Test上注入的bean

private AService aService; 

在您选择的AService实现bean中,使用

@Service("aService") 

注释。

您的Test类上的Mantein注释,

@Autowired
@Qualifier("aService")
private AService aService;

BService的相同场景是否存在多个BService接口的实现。

答案 2 :(得分:0)

a)见格泽戈兹的答案 b)这不是这样做的方法:

@Service
@Qualifier("aService")

相反,这是做到这一点的方法:

@Service("aService")

@Qualifier用于注入服务,而不是用于构建服务