一个接口有多个实现类,怎么知道调用接口了哪个实现类

假设有一个场景,一个service 接口定义了哆个 实现类,而在controller 我只想引入 service 接口,而这时,因为有个实现spring 不知道具体引入那个就会报错

 
 
 
 
 
 
 

 
 
 
 
 
 
 

如果一个接口有2个不同的实现, 那麼怎么来Autowire一个指定的实现

 
 
 

 

这时候再按@Autowired的方式去引用, 在同时存在两个实现类的情况下会报错, 这是由于 @Autowired 的特性决定的: @Autowired 的注入方式是 byType 注入 当要注入的类型在容器中存在多个时,Spring是不知道要引入哪个实现类的所以会报错。
那么在同一类型拥有多个实现类的时候如何注入呢?这种场景下只能通过 byName 注入的方式。可以使用 @Resource 或 @Qualifier 注解
 
 
 
 

1、接口A默认实现类D,真正调用接口类T

初始化接口A, 实例化D,执行T

 
 
 
 
 
 
 
 
 
 
 
 
 

我要回帖

更多关于 调用接口 的文章

 

随机推荐