interface A {
void say();
}
@Service
class A1 implements A {
void say(){System.out.println('A1');}
}
interface B extends A{
void say();
}
@Service
class B1 extends A1 implements B {
void say(){System.out.println('B1');}
}
报错:No unique bean of type [A] is defined: expected single matching bean but found 2: [B1, A1]
给每个service命名,例如
@Service("serviceA")
public class A
@Service("serviceB")
public class B
在注入的地方,同样要区分好名字,
@Autowired
@Qualifier("serviceA")
A serviceA
默认情况下,spring会帮你以接口名小驼峰形式注入Bean,如果出现多个Bean实现了相同的类,那就要这样区分了。
实际业务上,应该尽量避免这种情况,以免引入不必要的麻烦,一般,你这个例子属于不合理的设计。
谢谢