0

我是 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

提前致谢 :)

4

3 回答 3

2

在类上使用注释,而不是接口!

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

Spring不会实例化接口。

于 2013-06-14T09:43:55.067 回答
0

去除

@Qualifier 

来自 AService 和 BService 接口的注释。

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

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

private AService aService; 

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

@Service("aService") 

注解。

在您的 Test 类上添加注释,

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

如果 BService 接口存在多个实现,则 BService 的相同场景。

于 2013-06-14T09:46:47.720 回答
0

a)请参阅 Grzegoz 的回答
b)这不是这样做的方法:

@Service
@Qualifier("aService")

相反,这是这样做的方法:

@Service("aService")

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

于 2013-06-14T09:51:27.787 回答