Feign 接口的多态

腾讯云

2023-04-09 12:06:24


(资料图片仅供参考)

接口多态

在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接口的实现类,从而使用接口多态来调用不同的支付方式。

最新资讯

猜你喜欢

“疫”不容辞 火焰蓝的特殊“11·9”

2021-11

驴肉店里的培训班号称“考研包过”?济南警方侦破作弊案

2021-11

多地喊话!这类人拒不回国将注销户口!

2021-11

内蒙古民警暴雪中徒步8小时 寻回走失牛群

2021-11

浙江天台500多名视障者“重见天日”:好日子在光明中开启

2021-11

四川多所高校学子用“青春力量”助力疫情防控

2021-11

成都理工:三次全员核酸均为阴性 “三万人吃喝没人管”

2021-11

无辣不欢的年轻人 开始吃纯清汤火锅了?

2021-11