zoukankan      html  css  js  c++  java
  • SpringCloud系列之使用Feign进行服务调用

    上一章的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本篇博客

    Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。

    环境准备:

    • JDK 1.8
    • SpringBoot2.2.3
    • SpringCloud(Hoxton.SR6)
    • Maven 3.2+
    • 开发工具
      • IntelliJ IDEA
      • smartGit

    创建一个SpringBoot Initialize项目,详情可以参考我之前博客:SpringBoot系列之快速创建项目教程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

      port: 8083
    spring:
      application:
        name: feign-service-consumer
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
        healthcheck:
          enabled: false
      instance:
        status-page-url-path: http://localhost:8761/actuator/info
        health-check-url-path: http://localhost:8761/actuator//health
        prefer-ip-address: true
        instance-id: feign-service-consumer8083
    
    

    @FeignClient指定服务名称,@RequestMapping指定要调用的接口

    package com.example.springcloud.client.service;
    
    import com.example.springcloud.client.bean.User;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.stereotype.Service;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    /**
     * <pre>
     *  UserService
     * </pre>
     *
     * <pre>
     * @author mazq
     * 修改记录
     *    修改后版本:     修改人:  修改日期: 2020/07/28 13:09  修改内容:
     * </pre>
     */
    @FeignClient(value = "EUREKA-SERVICE-PROVIDER")
    @Service
    public interface UserService {
        @RequestMapping(value = "/api/users/{username}",method = RequestMethod.GET)
        User findGithubUser(@PathVariable("username")String username);
    
    }
    
    

    加上@EnableEurekaClient@EnableFeignClients,写个接口进行测试

    package com.example.springcloud.client;
    
    import com.example.springcloud.client.bean.User;
    import com.example.springcloud.client.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @EnableEurekaClient
    @EnableFeignClients
    @RestController
    public class SpringcloudFeignClientApplication {
    
        @Autowired
        UserService userService;
    
        public static void main(String[] args) {
            SpringApplication.run(SpringcloudFeignClientApplication.class, args);
        }
    
        @GetMapping("/findUser/{username}")
        public User index(@PathVariable("username")String username){
            return userService.findGithubUser(username);
        }
    }
    
    

    要运行eureka服务端,eureka服务提供者,代码请参考上一章博客

    补充:IDEA中多实例运行方法

    step1:如图,不要加上勾选
    在这里插入图片描述

    step2:指定不同的server端口和实例id,如图:
    在这里插入图片描述

    服务注册,可以看到两个实例
    在这里插入图片描述
    ok,启动eureka server(服务注册中心),eureka服务提供者端,和feign服务消费者端
    在这里插入图片描述
    http://localhost:8083/findUser/mojombo
    在这里插入图片描述
    附录:

    ok,本博客参考官方教程进行实践,仅仅作为入门的学习参考资料,详情可以参考Spring Cloud官方文档https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.2.0.RELEASE/reference/html/

    代码例子下载:code download

    优质学习资料参考:

  • 相关阅读:
    UVA 129 Krypton Factor (困难的串)(回溯法)
    UVA 524 Prime Ring Problem(素数环)(回溯法)
    【POJ 2559】Largest Rectangle in a Histogram【栈】
    【POJ 2559】Largest Rectangle in a Histogram【栈】
    向右看齐【栈】
    向右看齐【栈】
    向右看齐【栈】
    【模板】最近公共祖先【LCA】
    【模板】最近公共祖先【LCA】
    【模板】最近公共祖先【LCA】
  • 原文地址:https://www.cnblogs.com/mzq123/p/13390852.html
Copyright © 2011-2022 走看看