spring中一个接口出现多个实现类时,调用时如何选择实现类
ssss
·
@Component
public interface Aorder {
void say();
}
@Component
public class Corder implements Aorder{
@Override
public void say() {
System.out.println("----------Corder------------");
}
}
@Component
public class Dorder implements Aorder{
@Override
public void say() {
System.out.println("----------Border------------");
}
}
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class OrderTest {
@Autowired
private MyOrderTest myOrderTest;
@Test
public void say(){
myOrderTest.test();
}
}
此时会报错,调用Aorder时不知道调用哪一个bean
@Resource
@Service
public class MyOrderTest {
@Resource(type = Corder.class)
private Aorder aorder;
public void test(){
aorder.say();
}
}
此时就能正常调用了,但是Corder,Dorder都实现Aorder,此时Corder,Dorder 都生成了bean
@Primary
@Component
@Primary
public class Corder implements Aorder{
@Override
public void say() {
System.out.println("----------Corder------------");
}
}
Corder,Dorder都实现Aorder,此时只有Corder会生成bean,Dorder不会生成bean
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)