¿Cómo puedo obtener ServerWebExchange
o reactivos ServerHttpResponse
en el método controlador?
Estoy recibiendo constantemente NestedServletException
al intentar llamar al método controlador de descanso que acepta ServerWebExchange
.
Mi controlador se ve así:
@RestController
@RequestMapping(path = "/path/{param1}/path", produces = MediaType.APPLICATION_JSON_VALUE)
public class MyController {
@GetMapping("/path")
public Mono<Void> method(ServerWebExchange exchange) {
...
}
}
Método principal:
@SpringBootApplication
@ComponentScan(basePackages = {"my.package1", "my.package2"})
@EnableWebFlux
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
Excepción:
io.undertow.request: UT005023: Tratamiento de la petición a / ruta de excepción / valor / ruta / trayectoria
org.springframework.web.util.NestedServletException: Solicitud de procesamiento fallado; excepción anidada es java.lang.IllegalStateException: No constructor primario o por defecto encontrado para org.springframework.web.server.ServerWebExchange interfaz
Solución : asegúrese de que no tienen spring-webmvc
en la ruta de clase.
Yo estaba migrando a spring-webflux
, pero tengo spring-webmvc
como una dependencia transitiva. webflux
y webmvc
son incompatibles - sólo uno sería manejar las peticiones.