springboot单抽象方法多实现调用介绍

背景

  • 在项目开发中,不小心在两个不同的service中重新了同一个抽象类的抽象方法,引起了报错,特此记录一下。
  • 由于我的serviceImpl中的@service并没有标记别名,因此报错的信息如下: No qualifying bean of type 'com.xxxx.apis.service.xxxx.xxxx' available: expected single matching bean but found 2: xxxxGameServiceImpl,xxxxCpsServiceImpl。

代码

  • 其实解决办法就行给service类设置别名,然后在注入抽象类时进行指定
  • 两个简单的实现:

@Service("weixinPay")
public class WeixinPay implements Pay{
    @Override
    public Object pay(Map<String, Object> map){
        return "weixinpay";
    }

@Service("aliPay")
public class AliPay implements Pay{
    @Override
    public Object pay(Map<String, Object> map){
        return "alipay";
    }
}
  • 相关的调用方法
//方法1
@Resource(name="weixinPay")
ShopPay weixinPay;
    
@Resource(name="aliPay")
ShopPay aliPay;

//方法2

@Autowired
@Qualifier("weixinPay")
ShopPay weixinPay;
 
@Autowired
@Qualifier("aliPay")
ShopPay aliPay;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。