1.BUG描述
- BUG描述
在Spring Cloud Gateway使用编码的方式实现一个全局拦截器,在全局拦截器中想要打印响应日志。
于是自己装饰了一个具有打印日志功能的ServerHttpResponseDecorator,但是在转发后的服务返回响应的时候,ServerHttpResponseDecorator的writeWith却并没有执行
@Component
@Slf4j
public class CustomGlobaFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//响应日志
return handleResponse(exchange, chain);
}
public Mono<Void> handleResponse(ServerWebExchange exchange, GatewayFilterChain chain) {
try {
ServerHttpResponse originalResponse = exchange.getResponse();
// 缓存数据的工厂
DataBufferFactory bufferFactory = originalResponse.bufferFactory();
// 拿到响应码
HttpStatus statusCode = originalResponse.getStatusCode();
if (statusCode ==

文章讲述了在SpringCloudGateway中使用编码方式实现全局拦截器时,遇到ServerHttpResponseDecorator的writeWith方法未执行的问题。通过分析发现,原代码中的`@Order(-2)`注解位置导致了问题,解决方案是将其移到`getOrder()`方法内。作者决定遵循官方规范并结束研究。

被折叠的 条评论
为什么被折叠?



