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 {@Overridepublic 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 包调整到相应版本。