GH-3366: Document HTTP request mapping limitation (#3382)

* GH-3366: Document HTTP request mapping limitation

Fixes https://github.com/spring-projects/spring-integration/issues/3366

The same path cannot be mapped both Spring Integration and MVC ways

* Doc Polishing

Co-authored-by: Gary Russell <grussell@pivotal.io>
This commit is contained in:
Artem Bilan
2020-09-11 16:09:01 -04:00
committed by GitHub
parent dbb2f9cecb
commit c36314d6ec
2 changed files with 12 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.servlet.http.HttpServletRequest;
@@ -78,6 +79,14 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl
* register HTTP endpoints at runtime for dynamically declared beans, e.g. via
* {@link org.springframework.integration.dsl.context.IntegrationFlowContext}, and unregister
* them during the {@link BaseHttpInboundEndpoint} destruction.
*<p>
* This class extends the Spring MVC {@link RequestMappingHandlerMapping} class, inheriting
* most of its logic, especially {@link #handleNoMatch(Set, String, HttpServletRequest)},
* which throws a specific {@code 4xx} error for the HTTP response, when mapping doesn't match
* for some reason, preventing calls to any remaining mapping handlers in the application context.
* For this reason, configuring the same path for both Spring Integration and
* Spring MVC request mappings (e.g. `POST` in one and `GET` in the other) is not supported;
* the MVC mapping will not be found.
*
* @author Artem Bilan
* @author Gary Russell

View File

@@ -349,6 +349,9 @@ The following example shows how to do so:
For more information regarding handler mappings, see https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html[the Spring Framework Web Servlet documentation] or https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html[the Spring Framework Web Reactive documentation].
IMPORTANT: The `IntegrationRequestMappingHandlerMapping` extends the Spring MVC `RequestMappingHandlerMapping` class, inheriting most of its logic, especially `handleNoMatch(Set, String, HttpServletRequest)`, which throws a specific `4xx` error for the HTTP response, when mapping doesn't match for some reason, preventing calls to any remaining mapping handlers in the application context.
For this reason, configuring the same path for both Spring Integration and Spring MVC request mappings (e.g. `POST` in one and `GET` in the other) is not supported; the MVC mapping will not be found..
[[http-cors]]
==== Cross-origin Resource Sharing (CORS) Support