• 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;
    
        }

    启动访问:

    直接访问结果:

    此处已经成功了

  • 相关阅读:
    [转]2013豆瓣校园招聘研发类笔试题
    【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
    [转]2013百度校园招聘-机器学习和数据挖掘工程师-笔试题
    [转]一个应届计算机毕业生的2012求职之路
    图片镜像
    家有学霸的CEO
    盯盯拍Android App 3.0指导
    淘宝领取金币
    儿童散光眼的分类
    女孩被宠坏叫爷爷滚开
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10331467.html
Copyright © 2020-2023  润新知