首页 > Java > 正文

Spring boot WebFlux:WebFilter 不起作用

PHPz
发布: 2024-02-09 09:30:31
转载
651人浏览过

php小编香蕉介绍,spring boot webflux是一种基于响应式编程的web框架,提供了一种异步非阻塞的方式处理http请求。然而,有时候我们可能会遇到webfilter不起作用的问题。webfilter是用于在请求进入web应用程序之前或之后执行某些操作的组件。本文将探讨可能导致webfilter不起作用的原因,并提供解决方案,以确保webfilter在spring boot webflux中正常工作。

问题内容

我有下面的控制器,它返回字符串的 mono

@restcontroller
@requestmapping("api/v1/test")
public class testcontroller {

    @postmapping
    public mono<string> getdraft() {
        return mono.just("ok");
    }

}
登录后复制

我添加了bean webfilter来在请求到来时进行一些处理,问题是bean中的消息没有显示在控制台中,我尝试添加断点来调试,但是当我测试api时却没有停在断点处。在 actuator/beans 中,我找到了 bean slf4jmdcfilter。还有另一个配置要添加吗?

悟智写作
悟智写作

易开即用的AI写作平台

悟智写作 54
查看详情 悟智写作
@Configuration
public class WebConfig {

    public static final String TRX_ID = "transactionId";
    public static final String PATH_URI = "pathUri";

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    WebFilter slf4jMdcFilter() {
        return (exchange, chain) -> {
            System.out.println("Filtering request");
            String requestId = exchange.getRequest().getId();
            return chain.filter(exchange)
                    .contextWrite(Context.of(TRX_ID, requestId)
                            .put(PATH_URI, exchange.getRequest().getPath()));
        };
    }

}
登录后复制

解决方法

这可以通过使用 defercontextual(function) & transformdeferredcontextual(bifunction)

@Component
public class YourFilter implements WebFilter {

  @Override
  public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
    return Mono.deferContextual(contextView -> chain.filter(exchange)
        .contextWrite(context -> context.put("KEY", "VALUE")));
  }
}

// controller
 @Override
  public Mono<String> testApi(ServerWebExchange exchange) {
    return Mono.just("OK")
        .transformDeferredContextual((data, context) -> {
          log.info("context is {}", (Object) context.get("KEY"));
          return data;
        });
  }
登录后复制

以上就是Spring boot WebFlux:WebFilter 不起作用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号