• springcloud系列五 feign远程调用服务


    一:Feign简介

    Feign 是一种声明式、模板化的 HTTP 客户端,在 Spring Cloud 中使用 Feign,可以做到使用 HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个 HTTP 请求。

    Feign 的灵感来源于 Retrofit、JAXRS-2.0 和 WebSocket,它使得 Java HTTP 客户端编写更方便,旨在通过最少的资源和代码来实现和 HTTP API 的连接。

    二:Feign使用步骤

    在客户端集成Feign即可

    第一步:pom依赖

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

    由于可能特别多的模块需要调用其他模块的项目,那么就需要进行统一依赖,减少重复依赖:

    所以将这个依赖添加至父工程里面

    启动类添加注解开启远程调用:

    package com.cxy;
    
    import com.netflix.loadbalancer.BestAvailableRule;
    import com.netflix.loadbalancer.IRule;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    /***
     * @ClassName: PersonApplication
     * @Description:
     * @Auther:
     * @Date: 2019/1/2816:30
     * @version : V1.0
     */
    @SpringBootApplication
    @EnableEurekaClient  //开启注解,注册服务
    @MapperScan("com.cxy")
    @EnableFeignClients
    public class UserApplication {
        public static void main(String[] args) {
    
            SpringApplication.run(UserApplication.class,args);
        }
       @Bean
        @LoadBalanced  //使用负载均衡器Ribbon
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    
        /*@Bean
        public IRule myRule(){
            //return new RoundRobinRule();//轮询
            // return new RetryRule();//重试
            return new BestAvailableRule();
        }*/
    }
    @EnableFeignClients,这个注解

    远程调用方法首先需要写一个接口,可以当作是service:
    package com.cxy.service;
    
    import com.cxy.dataObject.PersonDo;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Component
    @FeignClient("cxy-person-service")
    public interface IPersonService {
        @RequestMapping("/person/{id}")
        PersonDo getPersonDoById(@PathVariable("id") Integer id);
    }

    contrller调用

        @Autowired
        private IPersonService personService;
      **/
        @RequestMapping(value = "/get/{id}",method = RequestMethod.GET)
        public PersonDo selectPsersonById(@PathVariable Integer id){
            PersonDo personDo =personService.getPersonDoById(id);
            return personDo;
    
        }

    启动访问:

    直接访问结果:

    此处已经成功了

  • 相关阅读:
    docker 部署 netcore3.1项目,使用nginx反向代理,swagger 不能访问的问题 SwaggerUIBundle is not defined
    windows 下使用SCP命令传递文件/文件夹到Liunx系统
    dockerfile 中的CMD 和 ENTRYPOINT 的区别
    netcore3.1 dockerfile 生成镜像 并 部署到 linux 系统
    docker 自定义网络 不使用 link 也能实现容器间网络互通
    CentOS 7中安装Nginx 并设置自启动
    微信小程序实现相册展示及图片预览
    netcore 3.1 项目部署到docker 及遇到的各种坑 和 对应解决方案
    netcore3.1 webApi项目发布Docker后,通过容器互联,访问redis 【部署redis到docker】
    docker 安装 mongodb 容器 及 挂载 配置文件、数据存放目录,日志存放目录,备份目录等
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10331467.html
Copyright © 2020-2023  润新知