-
Notifications
You must be signed in to change notification settings - Fork 38.8k
Closed
Labels
in: webIssues in web modules (web, webmvc, webflux, websocket)Issues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancementA general enhancement
Milestone
Description
org.springframework.web.reactive.function.server.RouterFunctions builder methods use HandlerFunction<ServerResponse> as their input types, rather than something like HandlerFunction<? extends ServerResponse> or equivalent generic signature similar to RouterFunctions::route(RequestPredicate,HandlerFunction).
This makes it infeasible to use other ServerResponse sub types such as EntityResponse or RenderingResponse.
Example code that does not compile
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.server.RenderingResponse;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
@Component
public class TestRouter {
@Bean
RouterFunction<? extends ServerResponse> myRoutes() {
return RouterFunctions.route()
.GET("/example", request -> renderSomething())
.GET("/example2", request -> renderSomething2())
.build();
}
Mono<RenderingResponse> renderSomething() {
return RenderingResponse.create("example").build();
}
Mono<ServerResponse> renderSomething2() {
return RenderingResponse.create("example").build().map(ServerResponse.class::cast);
}
}Metadata
Metadata
Assignees
Labels
in: webIssues in web modules (web, webmvc, webflux, websocket)Issues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancementA general enhancement