Java 我们可以在SpringWebFlux中使用Webservlet和servlet过滤器吗?

Java 我们可以在SpringWebFlux中使用Webservlet和servlet过滤器吗?,java,spring,spring-mvc,spring-boot,servlets,Java,Spring,Spring Mvc,Spring Boot,Servlets,我想从SpringMVC迁移到SpringWebFlux,但我从第三方使用了一些servlet过滤器和web servlet,必须迁移到它们的等效Webflux版本 但这是不可行的,因为它们来自第三方框架。 例如:H2服务器WebServlet和MetricsServlet和InstrumentedFilter 有没有办法将servlet或servlet过滤器转换为其等效的Webflux版本?您可以使用tomcat作为Webflux实现(您可以通过排除netty starter并包括tomcat

我想从SpringMVC迁移到SpringWebFlux,但我从第三方使用了一些servlet过滤器和web servlet,必须迁移到它们的等效Webflux版本

但这是不可行的,因为它们来自第三方框架。 例如:H2服务器
WebServlet
MetricsServlet
InstrumentedFilter


有没有办法将servlet或servlet过滤器转换为其等效的Webflux版本?

您可以使用tomcat作为Webflux实现(您可以通过排除netty starter并包括tomcat starter来实现)


org.springframework.boot
弹簧启动机tomcat
${spring boot.version}
org.springframework.boot
弹簧启动器webflux
${spring boot.version}
org.springframework.boot
弹簧起动器
您可以通过创建
WebServerFactoryCustomizer
bean并通过
Context
接口添加过滤器来添加servlet过滤器。例如:

@Bean
public WebServerFactoryCustomizer定制器(){
返回工厂->factory.addContextCustomizers(
上下文->{
FilterDef FilterDef=新的FilterDef();
filterDef.setFilterName(“名称”);
setFilter(新的SomeFilter());
FilterMap FilterMap=新的FilterMap();
filterMap.setFilterName(“名称”);
filterMap.addURLPattern(“/url/pattern”);
addFilterMap(filterMap);
addFilterDef(filterDef);
}
);
}

当配置为webflux“实现”时,tomcat Servlet的默认名称是
httpHandlerServlet

不,没有。。。servlet是基于标准化API的,对于反应式实现来说没有这种东西,更不用说整个技术堆栈是不同的。尽管您可能能够将某些东西固定,但这基本上会使您的反应部分变得无用,因为固定的东西需要被阻塞(由于servlet堆栈的API设计)。