Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jeecg
jeecg-boot
提交
3792f463
J
jeecg-boot
项目概览
jeecg
/
jeecg-boot
上一次同步 3 年多
通知
863
Star
24375
Fork
84
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jeecg-boot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3792f463
编写于
1月 25, 2021
作者:
JEECG低代码平台
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
FeignConfig 重复注册问题处理
上级
f3523660
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
76 addition
and
76 deletion
+76
-76
jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/FeignClientConfig.java
...ava/org/jeecg/starter/cloud/config/FeignClientConfig.java
+76
-76
未找到文件。
jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/FeignClientConfig.java
浏览文件 @
3792f463
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
<
HttpMessageConverters
>
messageConverters
)
{
return
new
SpringFormEncoder
(
new
SpringEncoder
(
messageConverters
));
}
}
//
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<HttpMessageConverters> messageConverters) {
//
return new SpringFormEncoder(new SpringEncoder(messageConverters));
//
}
//
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录