美文网首页
FeignClient接口封装

FeignClient接口封装

作者: Johar77 | 来源:发表于2020-03-13 00:33 被阅读0次

    Feign是一种声明式、模块化的HTTP客户端。在SpringCloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样,开发者完全无感知在进行HTTP请求调用。

    1.接口定义

    首先在单独的module中定义接口:

    @FeignClient(name ="com.johar.feign-test", path ="/user", url="${account-service-endpoint}")

    public interface User {

    @GetMapping("/{userId}")

    public BaseResponsefindById(@PathVariable("userId")int userId);

        @PostMapping("/add")

    public BaseResponsecreateUser(@RequestBody UserDto userDto);

    }

    FeignClient常用的注解属性如下:

    (1)name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现。

    (2)url:一般用于调试,手动指定@FeignClient的调用地址。

    (3)path:定义当前的FeignClient的统一前缀。

    (4)configuration:Feign的配置类,可以自定义Feign的Encoder,Decode,LogLevel,Contract。

    (5)fallbckFactory:实现每个接口通用的容错逻辑,减少重复代码。

    2.实现定义的接口

    在另外一个module中实现定义的接口:

    @RestController

    @RequestMapping("/user")

    public class UserControllerimplements User {

    @GetMapping("/{userId}")

    @Override

        public BaseResponsefindById(@PathVariable("userId")int userId) {

    UserDto userDto = UserDto.builder().age(29).id(userId).name("johar").sex(1).build();

            BaseResponse result =new BaseResponse();

            result.setData(userDto);

            return result;

        }

    @PostMapping("/add")

    @Override

        public BaseResponsecreateUser(@RequestBody UserDto userDto) {

    userDto.setId(1);

            BaseResponse result =new BaseResponse();

            result.setData(userDto);

            return result;

        }

    }

    3.使用FeignClient调用接口

    3.1 引入接口包

      <groupId>org.springframework.cloud

      <artifactId>spring-cloud-starter-netflix-ribbon

      <groupId>com.johar

      <artifactId>feign-api

      <version>0.0.1-SNAPSHOT

    </dependency>

    3.2 在启动类开启FeignClients

    @EnableFeignClients(basePackages = "com.johar.feignapi")

    3.3 FeignClient接口调用

    @SpringBootApplication

    @EnableFeignClients(basePackages ="com.johar.feignapi")

    public class FeignClientApplicationimplements CommandLineRunner {

    public static void main(String[] args) {

    SpringApplication.run(FeignClientApplication.class, args);

        }

    @Autowired

        private Useruser;

        @Override

        public void run(String... args)throws Exception {

    System.out.println(user.findById(1));

            System.out.println(user.createUser(UserDto.builder().sex(2).name("Anna").age(28).build()));

        }

    }

    相关文章

      网友评论

          本文标题:FeignClient接口封装

          本文链接:https://www.haomeiwen.com/subject/lrknjhtx.html