springboot单抽象方法多实现调用介绍
2021-11-11 本文已影响0人
_Kantin
背景
- 在项目开发中,不小心在两个不同的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;