Skip to content

Support multiple @RequestMapping annotations (@GetMapping, etc) on a controller method #32043

Open
@sbrannen

Description

@sbrannen

As a follow-up to #31962, we would like to investigate the feasibility of supporting multiple @RequestMapping annotations on a single handler method.

One idea is to merge attributes from multiple @RequestMapping annotations into a single RequestMappingInfo instance if they only differ by RequestMethod.

Another idea is to create one RequestMappingInfo per @RequestMapping annotation on a handler method and figure out how to rework our infrastructure to support multiple RequestMappingInfo instances for a single handler method.

We should also keep in mind that we may potentially decide to support multiple composed @RequestMapping annotations (e.g., @PostMapping and @PutMapping) on a single method without making @RequestMapping itself a @Repeatable annotation.

Activity

added
in: webIssues in web modules (web, webmvc, webflux, websocket)
on Jan 16, 2024
added this to the 6.2.x milestone on Jan 16, 2024
changed the title [-]Support multiple `@RequestMapping` annotations (`@GetMapping`, etc) on a controller method[/-] [+]Support multiple @RequestMapping annotations (@GetMapping, etc) on a controller method[/+] on Feb 14, 2024
rstoyanchev

rstoyanchev commented on Apr 18, 2024

@rstoyanchev
Contributor

While taking a look at this, we should also consider the case of an @HttpExchange (now also supported for server side use) and @RequestMapping on the same method, see #32328.

bclozel

bclozel commented on Jul 29, 2024

@bclozel
Member

We haven't made any progress on this and we're quite late in the 6.2 milestones to introduce such an important behavior change.

I also think that introducing such a change would probably require an "opt-in" configuration flag as this is a quite disruptive change. With this enabled, the web framework could potentially expose web endpoints that were not exposed previously (because ignored) and this could be hard for developers to track this change down. Given where the original issues and their background (#31962 and #32328), I don't think this should be treated as a feature widely requested by the community, or overall making sense with the existing model.

I'll move this back to 6.x backlog and I guess I'm not in favor of this feature overall.

modified the milestones: 6.2.x, 6.x Backlog on Jul 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: webIssues in web modules (web, webmvc, webflux, websocket)status: pending-design-workNeeds design work before any code can be developedtype: enhancementA general enhancement

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Participants

      @bclozel@sbrannen@rstoyanchev@jhoeller

      Issue actions

        Support multiple @RequestMapping annotations (@GetMapping, etc) on a controller method · Issue #32043 · spring-projects/spring-framework