在RestController方法中获取ServerWebExchange

时间:2018-07-15 14:40:45

标签: java spring spring-boot spring-webflux

如何通过控制器方法获得ServerWebExchange或反应性ServerHttpResponse

在尝试调用接受NestedServletException的rest控制器方法时,我不断得到ServerWebExchange

我的控制器如下:

@RestController
@RequestMapping(path = "/path/{param1}/path", produces = MediaType.APPLICATION_JSON_VALUE)
public class MyController {
    @GetMapping("/path")
    public Mono<Void> method(ServerWebExchange exchange) {
        ...
    }
}

主要方法:

@SpringBootApplication
@ComponentScan(basePackages = {"my.package1", "my.package2"})
@EnableWebFlux
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

例外:

  

io.undertow.request:UT005023:对/ path / value / path / path的异常处理请求

     

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalStateException:找不到接口org.springframework.web.server.ServerWebExchange

的主要或默认构造函数

1 个答案:

答案 0 :(得分:3)

解决方案:确保类路径上没有spring-webmvc

我正在迁移到spring-webflux,但得到spring-webmvc作为传递依赖。 webfluxwebmvc不兼容-只有一个可以处理请求。