public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMapping implements EmbeddedValueResolverAware
RequestMappingInfo instances from type and method-level
@RequestMapping annotations in
@Controller classes.loggerBEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTEHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description |
|---|
RequestMappingHandlerMapping() |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet()
Detects handler methods at initialization.
|
protected RequestMappingInfo |
createRequestMappingInfo(RequestMapping annotation,
RequestCondition<?> customCondition)
Created a RequestMappingInfo from a RequestMapping annotation.
|
ContentNegotiationManager |
getContentNegotiationManager()
Return the configured
ContentNegotiationManager. |
protected RequestCondition<?> |
getCustomMethodCondition(Method method)
Provide a custom method-level request condition.
|
protected RequestCondition<?> |
getCustomTypeCondition(Class<?> handlerType)
Provide a custom type-level request condition.
|
List<String> |
getFileExtensions()
Return the file extensions to use for suffix pattern matching.
|
protected RequestMappingInfo |
getMappingForMethod(Method method,
Class<?> handlerType)
Uses method and type-level @
RequestMapping annotations to create
the RequestMappingInfo. |
protected boolean |
isHandler(Class<?> beanType)
Whether the given type is a handler with handler methods.
|
protected String[] |
resolveEmbeddedValuesInPatterns(String[] patterns)
Resolve placeholder values in the given array of patterns.
|
void |
setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
Set the
ContentNegotiationManager to use to determine requested media types. |
void |
setEmbeddedValueResolver(StringValueResolver resolver)
Set the StringValueResolver to use for resolving embedded definition values.
|
void |
setUseRegisteredSuffixPatternMatch(boolean useRegisteredSuffixPatternMatch)
Whether to use suffix pattern match for registered file extensions only
when matching patterns to requests.
|
void |
setUseSuffixPatternMatch(boolean useSuffixPatternMatch)
Whether to use suffix pattern match (".*") when matching patterns to
requests.
|
void |
setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
Whether to match to URLs irrespective of the presence of a trailing slash.
|
boolean |
useRegisteredSuffixPatternMatch()
Whether to use registered suffixes for pattern matching.
|
boolean |
useSuffixPatternMatch()
Whether to use suffix pattern matching.
|
boolean |
useTrailingSlashMatch()
Whether to match to URLs irrespective of the presence of a trailing slash.
|
getMappingComparator, getMappingPathPatterns, getMatchingMapping, handleMatch, handleNoMatchcreateHandlerMethod, detectHandlerMethods, getHandlerInternal, getHandlerMethods, handlerMethodsInitialized, initHandlerMethods, lookupHandlerMethod, registerHandlerMethod, setDetectHandlerMethodsInAncestorContextsadaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initApplicationContext, initInterceptors, setAlwaysUseFullPath, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelpergetServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextgetApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContextpublic void setUseSuffixPatternMatch(boolean useSuffixPatternMatch)
The default value is true.
Also see setUseRegisteredSuffixPatternMatch(boolean) for
more fine-grained control over specific suffixes to allow.
public void setUseRegisteredSuffixPatternMatch(boolean useRegisteredSuffixPatternMatch)
If enabled, a controller method mapped to "/users" also matches to
"/users.json" assuming ".json" is a file extension registered with the
provided contentNegotiationManager. This can be useful for allowing only specific
URL extensions to be used as well as in cases where a "." in the URL path
can lead to ambiguous interpretation of path variable content, (e.g. given
"/users/{user}" and incoming URLs such as "/users/john.j.joe" and
"/users/john.j.joe.json").
If enabled, this flag also enables
useSuffixPatternMatch. The
default value is false.
public void setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
The default value is true.
public void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
ContentNegotiationManager to use to determine requested media types.
If not set, the default constructor is used.public void setEmbeddedValueResolver(StringValueResolver resolver)
EmbeddedValueResolverAwaresetEmbeddedValueResolver in interface EmbeddedValueResolverAwarepublic void afterPropertiesSet()
AbstractHandlerMethodMappingafterPropertiesSet in interface InitializingBeanafterPropertiesSet in class AbstractHandlerMethodMapping<RequestMappingInfo>public boolean useSuffixPatternMatch()
public boolean useRegisteredSuffixPatternMatch()
public boolean useTrailingSlashMatch()
public ContentNegotiationManager getContentNegotiationManager()
ContentNegotiationManager.public List<String> getFileExtensions()
protected boolean isHandler(Class<?> beanType)
Controller annotation.isHandler in class AbstractHandlerMethodMapping<RequestMappingInfo>beanType - the type of the bean being checkedprotected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType)
RequestMapping annotations to create
the RequestMappingInfo.getMappingForMethod in class AbstractHandlerMethodMapping<RequestMappingInfo>method - the method to provide a mapping forhandlerType - the handler type, possibly a sub-type of the method's
declaring classnull if the method
does not have a @RequestMapping annotation.getCustomMethodCondition(Method),
getCustomTypeCondition(Class)protected RequestCondition<?> getCustomTypeCondition(Class<?> handlerType)
RequestCondition can be of any type so long as the
same condition type is returned from all calls to this method in order
to ensure custom request conditions can be combined and compared.
Consider extending AbstractRequestCondition for custom
condition types and using CompositeRequestCondition to provide
multiple custom conditions.
handlerType - the handler type for which to create the conditionnullprotected RequestCondition<?> getCustomMethodCondition(Method method)
RequestCondition can be of any type so long as the
same condition type is returned from all calls to this method in order
to ensure custom request conditions can be combined and compared.
Consider extending AbstractRequestCondition for custom
condition types and using CompositeRequestCondition to provide
multiple custom conditions.
method - the handler method for which to create the conditionnullprotected RequestMappingInfo createRequestMappingInfo(RequestMapping annotation, RequestCondition<?> customCondition)