Feign 接口的多态|全球要闻


【资料图】

接口多态

在Feign中,接口多态可以让我们通过一个接口的引用来调用不同的实现类,从而提高代码的灵活性和可扩展性。

例如,我们有一个支付服务接口,它有多种支付方式,我们可以使用接口多态来实现这些支付方式的调用。

定义接口

首先,我们需要定义一个支付服务接口,其中包含了多种支付方式的方法。

public interface PaymentService {    @PostMapping("/pay")    PaymentResponse pay(@RequestBody PaymentRequest request);}public class PaymentRequest {    private String paymentType;    private Double amount;    //...}public class PaymentResponse {    private String status;    private String message;    //...}

在上面的示例中,我们定义了一个名为PaymentService的接口,其中包含了支付方法pay,并定义了请求参数PaymentRequest和响应参数PaymentResponse。

实现接口

接下来,我们可以实现支付服务接口,针对不同的支付方式提供不同的实现。

@FeignClient(name = "alipay-service")public interface AlipayService extends PaymentService {}@FeignClient(name = "wechatpay-service")public interface WechatpayService extends PaymentService {}

在上面的示例中,我们分别定义了支付宝支付服务和微信支付服务,它们都实现了PaymentService接口,从而可以使用接口多态来调用不同的支付方式。

使用接口多态

最后,我们可以使用接口多态来调用不同的支付方式,例如:

public class PaymentController {    private PaymentService paymentService;    public PaymentController(PaymentService paymentService) {        this.paymentService = paymentService;    }    @PostMapping("/pay")    public PaymentResponse pay(@RequestBody PaymentRequest request) {        return paymentService.pay(request);    }}@RestControllerpublic class AlipayController {    private PaymentController paymentController;    public AlipayController(AlipayService alipayService) {        paymentController = new PaymentController(alipayService);    }    @PostMapping("/alipay/pay")    public PaymentResponse pay(@RequestBody PaymentRequest request) {        return paymentController.pay(request);    }}@RestControllerpublic class WechatpayController {    private PaymentController paymentController;    public WechatpayController(WechatpayService wechatpayService) {        paymentController = new PaymentController(wechatpayService);    }    @PostMapping("/wechatpay/pay")    public PaymentResponse pay(@RequestBody PaymentRequest request) {        return paymentController.pay(request);    }}

在上面的示例中,我们定义了一个名为PaymentController的控制器,它接收一个PaymentService接口的实现类,并提供了一个名为pay的方法来调用支付服务。

然后,我们分别定义了支付宝控制器和微信支付控制器,并将它们的构造函数注入了AlipayService和WechatpayService接口的实现类,从而使用接口多态来调用不同的支付方式。

关键词:

    为你推荐

    华夏基金旗下500成长ETF正式上市 发行规模2.54亿元

    2022年8月5日,1只新ETF正式上市,为华夏基金旗下的500成长ETF(159620),发行规模2 54亿元,截至13:20,500成长ETF上涨0 3%,成交额1 17亿

    来源:资本邦 22-08-05

    广西410个招商引资重点项目开工 总投资2096亿元!

    7月7日,记者从自治区投资促进局获悉,我区以项目开工为抓手,强化招商引资项目落地导向,截至6月底,全区二季度410个招商引资重点项目开工

    来源:广西日报 22-07-08

    协鑫新能源:拟9037.98万元出售7座光伏电站

    3月16日,协鑫新能源发布公告称,公司间接附属苏州协鑫新能源及苏州协鑫开发(作为卖方)、江苏和盛(作为买方)于2022年3月16日与该等目标公司

    来源:国际能源网 22-03-18

    三峡能源河曲100MW光伏+储能发电EPC项目中标候选人公示

    3月16日,三峡能源河曲100MW光伏+储能发电项目光伏场区工程EPC总承包中标候选人公示。中标候选人第1名:中国能源建设集团山西电力建设第一

    来源:国际能源网 22-03-18

    因地制宜利用光伏 四川成都市近零碳排放区试点建设工作方案发布

    3月14日,成都市生态环境局等7部门发布成都市近零碳排放区试点建设工作方案,方案指出,到2025年,力争建成近零碳园区、工业企业、公共机构

    来源:国际能源网 22-03-18
    返回顶部