从 Spring Boot 2.7.x 升级到 3.2.x 后,Spring Webfilter 类在 Spring WebFlux 应用程序中不起作用

问题描述 投票:0回答:1

我们的 Spring WebFlux 应用程序中有一个过滤器,如下所示

public class MyFilter implements WebFilter {
   @Override
   public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) 
      {
        ...
      }
}

当我们使用 Spring Boot 2.7.10 版本时,过滤器正在工作。 最近,我们从 Spring Boot 2.7.18 版本升级到 Spring Boot 3.2.6 版本。 Spring Boot 升级后不会调用过滤器。

我们的 pom.xml 中有以下两个依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

如果我删除依赖项,则会触发过滤器

spring-boot-starter-web
,但在这种情况下 API 调用将返回 404。

如果我重新添加

spring-boot-starter-web
依赖项,则 API 可以正常工作,但不会触发过滤器。

java spring spring-boot spring-mvc spring-webflux
1个回答
0
投票

删除依赖项

spring-boot-starter-web
并更改应用程序中的以下属性后

来自(已删除)

server.servlet.context-path=/myapp

至(已添加)

spring.webflux.base-path=/myapp
© www.soinside.com 2019 - 2024. All rights reserved.