码迷,mamicode.com
首页 > 其他好文 > 详细

一个接口多个实现类,controller层如何操作

时间:2020-10-06 21:09:46      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:inf   alt   nbsp   ring   没有   pre   mamicode   接口实现   优先   

spring中controller层会注入 接口,然后通过接口调用方法。

技术图片

 如果一个接口对应一个实现类,这样操作没有问题,如果一个接口实现多个实现类(多态),这样操作就会出现问题。

解决方法:一个接口多个实现类,需注入指定的实现类

例如:Interface 接口有两个实现类 InterfaceImpl1 和 InterfaceImpl2

//实现类1
@Service
public class InterfaceImpl1 implements Interface {


//实现类2 @Service public class InterfaceImpl2implements Interface {

//业务类,controller @Autowired Interface private Interface interface; 按照上面的写法,启动服务时会报错 解决方法 1.指明实现类的优先级,注入的时候使用优先级高的实现类 //实现类1 @Service @Primary //同一个接口的实现类,最多只能有一个添加该注解 public class InterfaceImpl1 implements Interface { 在controller中注入接口,默认使用的是Primary 标注的实现类的方法 2.通过 @Autowired 和 @Qualifier 配合注入 @Autowired @Qualifier(“interfaceImpl1”) Interface1 interface1; //正常启动 3.使用@Resource注入,根据默认类名区分 @Resource(name = “interfaceImpl1”) Interface1 interface1; //正常启动 4.使用@Resource注入,根据@Service指定的名称区分 需要在实现类@Service后设置名称: @Service(“s1”) public class InterfaceImpl1 implements Interface { @Resource(name = “s1”) Interface1 interface1; //正常启动

一个接口多个实现类,controller层如何操作

标签:inf   alt   nbsp   ring   没有   pre   mamicode   接口实现   优先   

原文地址:https://www.cnblogs.com/jingpeng77/p/13773423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!