我是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
提前感谢:)
在类上使用注释,而不是在接口上!
@Service
@Qualifier("aService")
public class AServiceImpl implements AService {
//Some methods
}
Spring不会实例化接口
a)见Grzegoz的回答
B)这不是这样做的方法:
@Service
@Qualifier("aService")
应该这样做:
@Service("aService")
@Qualifier
是用来注入服务的,而不是用来构造服务的
删除
@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接口的实现