Environment:

  • Spring 2.3.0.RELEASE
  • JDK 1.8

When I use spring.mvc.servlet.path config in application.yml or application.properties, I did spring.mvc.servlet.path = /test, at the same time,I had TestController, used @GetMapping("/test") at one method, and used @GetMapping("/test1") at other method. Some problems happened when I tested.

Steps to reproduce:

  • Add spring.mvc.servlet.path=/test in application.properties.
  • Define Controller,use @RestController in controller class, then use @GetMapping("/test") at one method, finally,use @GetMapping("/test1") at other method.
  • start project,visit urls that I want to test.

I expect that:

  • I visit http://localhost:8080/test/test, I got result.

  • I visit http://localhost:8080/test/test1, I got result too.

  • I visit http://localhost:8080/test, HTTP ERROR 404

  • I visit http://localhost:8080/test1, HTTP ERROR 404

Actually:

  • I visit http://localhost:8080/test/test, I got result.

  • I visit http://localhost:8080/test/test1, I got result too.

  • I visit http://localhost:8080/test, I got result.It confused me!

  • I visit http://localhost:8080/test1, HTTP ERROR 404,Why?The above URL can be visited,it can not.

In fact,I find that WebFlux use spring.webflux.base-path=/test has some problems

This is link of My demo: https://github.com/DogeC0in/BugFinder

Comment From: wilkinsona

The behaviour you have observed is due to UrlPathHelper in Spring MVC which is part of Spring Framework. @rstoyanchev has responded on the duplicate issue that you opened. In the interests of keeping things in one place, I'm going to close this issue.