SpringCloud openFeign 之 获取被调用服务名

SpringCloud openFeign 之 获取被调用服务名

一. 概述

低版本 feign 只能获取到被调用方法的信息。

只有高版本 feign 才支持获取到被调用服务的信息。

二. 代码实现

package com.zxguan.springcloud2.template.user;

import com.zxguan.springcloud2.template.user.config.TraceInterceptor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableEurekaClient
@EnableFeignClients(value = "com.zxguan", defaultConfiguration = TraceInterceptor.class)
@SpringBootApplication()
public class UserApplication {
   

    public static void main(String[] args) {
   
        SpringApplication.run(UserApplication.class, args);
    }

}
@Component
public class TraceInterceptor implements RequestInterceptor {
   

    @Override
    public void apply(RequestTemplate requestTemplate) {
   
        Target target =  requestTemplate.feignTarget();
        System.out.println("==============>" + target.name());
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zxguan.springcloud2.template</groupId>
    <artifactId>user</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>        
    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-openfeign-core -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-openfeign-core</artifactId>
            <version>2.2.10.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.github.openfeign/feign-core -->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-core</artifactId>
            <version>11.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>18.0</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

三. 特别注意

在升级 feign-core 版本后,可能会出现 java.lang.NoSuchMethodException 异常。这就说明有版本问题,此时需要定位到报错位置,将对应方法所属 jar 包调整到相应版本。

相关推荐

  1. SpringCloud openFeign 获取调用服务

    2024-01-16 21:46:03       35 阅读
  2. 源码解析:mybatis调用获取sqlSession

    2024-01-16 21:46:03       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 21:46:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 21:46:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 21:46:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 21:46:03       20 阅读

热门阅读

  1. 算法通关村第十一关—理解位运算的规则(青铜)

    2024-01-16 21:46:03       29 阅读
  2. 装箱问题(C语言)

    2024-01-16 21:46:03       34 阅读
  3. 模拟和高精度简单总结(依靠洛谷题单)

    2024-01-16 21:46:03       30 阅读
  4. ABC210(A-C)

    2024-01-16 21:46:03       31 阅读
  5. 【归并排序】264. 丑数 II

    2024-01-16 21:46:03       32 阅读
  6. Linux网络编程---socket编程接口接口函数

    2024-01-16 21:46:03       31 阅读
  7. Opencv基础用法学习2

    2024-01-16 21:46:03       31 阅读
  8. git 清除不受git控制的文件夹和文件

    2024-01-16 21:46:03       33 阅读
  9. 199_二叉树的右视图

    2024-01-16 21:46:03       27 阅读