diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..29160cf18b85d89bb0338b343fd60b08b68977be --- /dev/null +++ b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java @@ -0,0 +1,76 @@ +package org.jeecg.config; + +import feign.Feign; +import feign.Logger; +import feign.RequestInterceptor; +import feign.codec.Encoder; +import feign.form.spring.SpringFormEncoder; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.constant.CommonConstant; +import org.springframework.beans.factory.ObjectFactory; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.cloud.openfeign.FeignAutoConfiguration; +import org.springframework.cloud.openfeign.support.SpringEncoder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Scope; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + + +@ConditionalOnClass(Feign.class) +@AutoConfigureBefore(FeignAutoConfiguration.class) +@Slf4j +@Configuration +public class FeignConfig { + + @Bean + public RequestInterceptor requestInterceptor() { + return requestTemplate -> { + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + if (null != attributes) { + HttpServletRequest request = attributes.getRequest(); + log.info("Feign request: {}", request.getRequestURI()); + // 将token信息放入header中 + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + if(token==null){ + token = request.getParameter("token"); + } + log.info("Feign request token: {}", token); + requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token); + } + }; + } + + + + /** + * Feign 客户端的日志记录,默认级别为NONE + * Logger.Level 的具体级别如下: + * NONE:不记录任何信息 + * BASIC:仅记录请求方法、URL以及响应状态码和执行时间 + * HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息 + * FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据 + */ + @Bean + Logger.Level feignLoggerLevel() { + return Logger.Level.FULL; + } + + /** + * Feign支持文件上传 + * @param messageConverters + * @return + */ + @Bean + @Primary + @Scope("prototype") + public Encoder multipartFormEncoder(ObjectFactory messageConverters) { + return new SpringFormEncoder(new SpringEncoder(messageConverters)); + } +} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/FeignClientConfig.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/FeignClientConfig.java deleted file mode 100644 index 612da73aa0730fc940ae0a5ad418150b713475ba..0000000000000000000000000000000000000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/FeignClientConfig.java +++ /dev/null @@ -1,76 +0,0 @@ -//package org.jeecg.starter.cloud.config; -// -//import feign.Feign; -//import feign.Logger; -//import feign.RequestInterceptor; -//import feign.codec.Encoder; -//import feign.form.spring.SpringFormEncoder; -//import lombok.extern.slf4j.Slf4j; -//import org.jeecg.common.constant.CommonConstant; -//import org.springframework.beans.factory.ObjectFactory; -//import org.springframework.boot.autoconfigure.AutoConfigureBefore; -//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -//import org.springframework.boot.autoconfigure.http.HttpMessageConverters; -//import org.springframework.cloud.openfeign.FeignAutoConfiguration; -//import org.springframework.cloud.openfeign.support.SpringEncoder; -//import org.springframework.context.annotation.Bean; -//import org.springframework.context.annotation.Configuration; -//import org.springframework.context.annotation.Primary; -//import org.springframework.context.annotation.Scope; -//import org.springframework.web.context.request.RequestContextHolder; -//import org.springframework.web.context.request.ServletRequestAttributes; -// -//import javax.servlet.http.HttpServletRequest; -// -// -//@ConditionalOnClass(Feign.class) -//@AutoConfigureBefore(FeignAutoConfiguration.class) -//@Slf4j -//@Configuration -//public class FeignClientConfig { -// -// @Bean -// public RequestInterceptor requestInterceptor() { -// return requestTemplate -> { -// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); -// if (null != attributes) { -// HttpServletRequest request = attributes.getRequest(); -// log.info("Feign request: {}", request.getRequestURI()); -// // 将token信息放入header中 -// String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); -// if(token==null){ -// token = request.getParameter("token"); -// } -// log.info("Feign request token: {}", token); -// requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token); -// } -// }; -// } -// -// -// -// /** -// * Feign 客户端的日志记录,默认级别为NONE -// * Logger.Level 的具体级别如下: -// * NONE:不记录任何信息 -// * BASIC:仅记录请求方法、URL以及响应状态码和执行时间 -// * HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息 -// * FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据 -// */ -// @Bean -// Logger.Level feignLoggerLevel() { -// return Logger.Level.FULL; -// } -// -// /** -// * Feign支持文件上传 -// * @param messageConverters -// * @return -// */ -// @Bean -// @Primary -// @Scope("prototype") -// public Encoder multipartFormEncoder(ObjectFactory messageConverters) { -// return new SpringFormEncoder(new SpringEncoder(messageConverters)); -// } -//}