Favor PathPatternParser Over HandlerMappingIntrospector #16408
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #13562
Instead of needing a
HandlerMappingIntrospector
instance, applications can now do the following to simplify specifying the servlet path in the Java DSL:To apply one across all DSL instances, do:
This second one is quite handy for when Spring MVC has a non-root servlet path. For example, there may be an option for Spring Boot to publish this bean since it knows when a servlet path has been specified in Boot properties
This PR also produces
PathPatternRequestMatcher
, which allows for specifying aPathPatternParser
.Questions:
ServletRequestMatcherBuilders
be left out for now? I quite like it since it allows the API to be intentionally servlet-specific (have methods likedefaultServlet
,servletPath
, andservletExtension
(should that be needed). I also feel it's simpler to know what I'm doing withServletRequestMatcherBuilder.servletPath
thanPathPatterRequestMatcher.builder()#servletPath
. Technically, though,ServletRequestMatcherBuilders
is only for convenience.RequestMatcherBuilder
helpful? I find it to be quite helpful and clearly in line with how other components are designed in Spring Security. It is essentially present so that beans have an interface for publishing and to simplify adding convenience behaviors likeanyRequest()
. Once again, though, it can be added later. (Note that it would likely need to be added were it to be used by Spring Boot to automatically configure the DSL with the servlet path.)Please note that there are a couple of cleanup commits in this PR as well. The commit of particular interest is the first one.