暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

feign的契约设置与继承特性

燕山雷震子 2021-07-08
1291


    原生的feign是不支持spring mvc注解的,spring cloud在feign的基础上做了扩展才可以支持,当我们现在spring cloud中使用原生的注解方式定义客户端时,通过配置契约可以实现这个要求,目前spring cloud中默认的时springmvc contract,当我们配置使用了该默认的契约后,之前定义的client就失效,当然使用配置属性的方式配置契约也是允许的:

@Configuration 

public class FeignConfiguration { 

     @Bean    public Contract feignContract() { 

         return new feign.Contract.Default(); 

     }

 }


继承特性



    feign的继承特性可以支持我们把服务的接口定义单独抽提出来,作为公共的依赖让其他模块调用,让我们来看一下具体操作:


定义服务feign-inherit-api,添加feign依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>


定义接口,指定服务关联:

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
* @Description:
* @Author: LeiZhenZi
* @Date: 2021/7/6
* @Time: 下午2:01
* Copyright (C) 2020
* All rights reserved.
*/
@FeignClient("feign-inherit-provider")
public interface UserRemoteClient {
@GetMapping("/user/name")
String getName();
}
复制


定一个服务提供者feign-inherit-provider,引入feign-inherit-api:

<dependency>
    <groupId>net.biancheng</groupId>
    <artifactId>feign-inherit-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>


实现UserRemoteClient等api服务的接口:

import com.jetfire.ribbonnativedemo.interfaces.UserRemoteClient;
import org.springframework.web.bind.annotation.RestController;

/**
* @Description:
* @Author: LeiZhenZi
* @Date: 2021/7/6
* @Time: 下午2:06
* Copyright (C) 2020
* All rights reserved.
*/
@RestController
public class DemoController implements UserRemoteClient{

@Override
public String getName() {
return "abc";
}
}
复制


创建一个服务消费者 feign-inherit-consume,注入实现api服务接口的具体类来完成消费者具体的业务逻辑:

result getNameresult
复制


结语



    今天的分享就到这里,我是雷记,专注于分享关于开发编程相关的技术干货,如果今日的分享对您有帮助的话,还望不吝关注点赞,这对我很重要!如果各位在开发过程中遇到棘手问题,可以扫描下图二维码加入,和雷记与其他小伙伴一起探讨解决,让我们努力让每一个问题都得到解决!

    



推荐阅读
文章转载自燕山雷震子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论