当前位置: 首页 > 知识库问答 >
问题:

Spring WebFlux中的控制器使用Netty Server后是否会触发WebFilter?

归翔
2023-03-14

我正在寻找Spring WebFlux中的servletFilter等效项。WebFilter似乎只在控制器之前触发,而不是之后。例如,我可以添加一个WebFilter以在请求传入时执行某些操作,但我找不到等效的“过滤器”来在响应发送回时执行某些操作。

你能有一个双向发射的“过滤器”吗?

共有2个答案

郑波
2023-03-14

只需在 webFilterChain.filter 调用后添加代码即可。

@Component
public class MyFilter implements WebFilter {

@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
  Mono<Void> result = chain.filter(exchange);
  return result.then(<do-whatever>);
}
戚逸清
2023-03-14

您仍然可以使用 WebFilter 来修改服务器的出站响应。下面是向响应添加标头的示例:

@Component
public class ExampleWebFilter implements WebFilter {
 
    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange, 
      WebFilterChain webFilterChain) {
        
        serverWebExchange.getResponse()
          .getHeaders().add("web-filter", "web-filter-test");
        return webFilterChain.filter(serverWebExchange);
    }
}

参考:https://www.baeldung.com/spring-webflux-filters

 类似资料:
  • 问题内容: 我想触发一个包含jQuery指令的AngularJS自定义指令。如何做呢?我已经在指令中阅读了关于发射功能的信息? 想法? 问题答案: 您可以使用服务在控制器和指令之间进行通信。 服务可能如下所示: 该指令可以响应服务: 只需将我所做的替换为jQuery操作,您就应该拥有所需的东西。 这是一个有效的小提琴:http : //jsfiddle.net/jeremylikness/wqXY

  • 概览 触发器配置卡片 此面板配置一些触发器的基本信息,或者进行查阅触发器触发日志等操作。 触发类型目前有两种: 数据表 微信支付回调 条件卡片 对应上面的触发类型,设置不同触发类型的参数。 动作卡片 当触发器的条件被满足,将会执行触发器中的动作。 目前有四种动作类型可选,分别如下: 邮件 微信模板消息 webhook 数据表操作 不同的触发类型对应可选的动作类型不同,每个动作类型又有可选模板变量的

  • 问题内容: 如何获得Spring 3.0控制器来触发404? 我有一个带有控制器的控制器,对于要访问该控制器的某些URL,我希望该容器带有404。 问题答案: 从Spring 3.0开始,您还可以抛出带有注释声明的Exception :

  • 下面的代码是否阻止调用,如果是,如何使其成为非阻塞?i、 e.使反应式Java流的使用变得无用?如何在不阻塞呼叫的情况下分页? 目前,我有一个webClient调用后端服务,该服务返回

  • 成功登录后,下面的控制器方法将转发给另一个控制器,为模型和视图提供服务。这很好,但浏览器的url显示“http://localhost:8080/AppName/loginSuccessForward“转发完成后,即使它正在显示来自转发控制器的视图。 有没有办法让浏览器显示转发的控制器的url?如果它如我所愿地工作,用户将在浏览器中看到“http://localhost:8080/AppName/