Spring ServerWebExchange属性为空

Spring ServerWebExchange属性为空,spring,filter,spring-webflux,Spring,Filter,Spring Webflux,我有基于WebFlux的基于Spring引导注释的控制器。我实现了WebFilter,在WebFilter内部调用了serverWebExchange.getAttributes(),它返回了4个属性,这很好。但在那之后它停止了工作,现在它总是返回空的属性映射。我并没有在控制器中更改任何内容,但即使更改了,我仍然应该获得这些属性。为什么它停止工作?当我第一次这样做时,它就工作了: this.handlerMapping.getHandler(serverWebExchange) 其中,hand

我有基于WebFlux的基于Spring引导注释的控制器。我实现了
WebFilter
,在
WebFilter
内部调用了
serverWebExchange.getAttributes()
,它返回了4个属性,这很好。但在那之后它停止了工作,现在它总是返回空的属性映射。我并没有在控制器中更改任何内容,但即使更改了,我仍然应该获得这些属性。为什么它停止工作?

当我第一次这样做时,它就工作了:

this.handlerMapping.getHandler(serverWebExchange)
其中,
handlerMapping
是一个类型为
RequestMappingHandlerMapping
的bean,您可以从WebFlux注入该bean


这行代码初始化
serverWebExchange
属性。在问题中,我写道它工作过一次,然后就停止了。原因是当时我正在试验
handlerMapping
,它使它工作了,然后我删除了它,属性停止了初始化。调试表明,这些属性通常是在应用
WebFilter
s之后设置的。这一行代码使它能够更早地初始化。

您可能导入了导致应用程序转换为servlet的内容。如果web和webflux都在类路径上,则默认为MVC。尝试在属性中设置
spring.main.web应用程序type=REACTIVE
,看看会发生什么?@Brian Hi,我调试了
SpringApplication#推断webapplicationtype
,并为我的应用程序选择了
REACTIVE
,尽管我没有在
application.properties中设置它,而且我没有
@EnableWebFlux
注释。可能是因为我使用了
springbootstarterwebflux
@Brian