接口有多个实现类,spring如何自动注入想

 我来答
渴鸿香
2018-11-27 · 超过15用户采纳过TA的回答
知道答主
回答量:32
采纳率:100%
帮助的人:11万
展开全部

这种场景下,只能通过 byName 注入的方式。可以使用 @Resource 或 @Qualifier 注解。@Resource 默认是按照 byName 的方式注入的, 如果通过 byName 的方式匹配不到,再按 byType 的方式去匹配。

例如接口IAnimal有两个实现类 DaoImpl 和 CatImpl。

  • @Service("dogImpl")

  • public class DaoImpl impliments IAnimal{

  • ...

  • }

  • @Service("catImpl")

  • public class CatImpl impliments IAnimal{

  • ...

  • }

    public class AnimalController {

    @Resource(name="dogImpl")        //实现类1中 @Service注解中标定的名称

    private IAnimal dogImpl;

    ......

    }或者

    @Qualifier 注解也是 byName的方式,但是与@Resource 有区别,@Qualifier 使用的是 类名

    public class AnimalController {

    @Qualifier("DaoImpl")        //实现类1的类名。注意区分与Resource(name="dogImpl") 的区别。

    private IAnimal dogImpl;

    ......

    }

    推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

    为你推荐:

    下载百度知道APP,抢鲜体验
    使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
    扫描二维码下载
    ×

    类别

    我们会通过消息、邮箱等方式尽快将举报结果通知您。

    说明

    0/200

    提交
    取消

    辅 助

    模 式