类 RequestMappingHandlerMapping
- java.lang.Object
- org.springframework.context.support.ApplicationObjectSupport
- org.springframework.web.context.support.WebApplicationObjectSupport
- org.springframework.web.servlet.handler.AbstractHandlerMapping
- org.springframework.web.servlet.handler.AbstractHandlerMethodMapping<RequestMappingInfo>
- org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping
- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
- 所有已实现的接口:
Aware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,EmbeddedValueResolverAware
,Ordered
,ServletContextAware
,MatchableHandlerMapping
,HandlerMapping
public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMapping implements MatchableHandlerMapping, EmbeddedValueResolverAware
CreatesRequestMappingInfo
instances from type and method-level@RequestMapping
annotations in@Controller
classes.Deprecation Note:
In 5.2.4,useSuffixPatternMatch
anduseRegisteredSuffixPatternMatch
are deprecated in order to discourage use of path extensions for request mapping and for content negotiation (with similar deprecations inContentNegotiationManagerFactoryBean
). For further context, please read issue #24719.- 从以下版本开始:
- 3.1
- 作者:
- Arjen Poutsma, Rossen Stoyanchev, Sam Brannen
字段概要
从类继承的字段 org.springframework.context.support.ApplicationObjectSupport
logger
从接口继承的字段 org.springframework.web.servlet.HandlerMapping
BEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, LOOKUP_PATH, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE
从接口继承的字段 org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
构造器概要
构造器 构造器 说明 RequestMappingHandlerMapping()
方法概要
所有方法 实例方法 具体方法 已过时的方法 修饰符和类型 方法 说明 void
afterPropertiesSet()
Detects handler methods at initialization.protected RequestMappingInfo
createRequestMappingInfo(RequestMapping requestMapping, RequestCondition<?> customCondition)
Create aRequestMappingInfo
from the supplied@RequestMapping
annotation, which is either a directly declared annotation, a meta-annotation, or the synthesized result of merging annotation attributes within an annotation hierarchy.ContentNegotiationManager
getContentNegotiationManager()
Return the configuredContentNegotiationManager
.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()
已过时。as of 5.2.4.protected RequestMappingInfo
getMappingForMethod(Method method, Class<?> handlerType)
Uses method and type-level @RequestMapping
annotations to create the RequestMappingInfo.Map<String,Predicate<Class<?>>>
getPathPrefixes()
The configured path prefixes as a read-only, possibly empty map.protected CorsConfiguration
initCorsConfiguration(Object handler, Method method, RequestMappingInfo mappingInfo)
Extract and return the CORS configuration for the mapping.protected boolean
isHandler(Class<?> beanType)
Whether the given type is a handler with handler methods.RequestMatchResult
match(HttpServletRequest request, String pattern)
Determine whether the given request matches the request criteria.protected void
registerHandlerMethod(Object handler, Method method, RequestMappingInfo mapping)
Register a handler method and its unique mapping.void
registerMapping(RequestMappingInfo mapping, Object handler, Method method)
Register the given mapping.protected String[]
resolveEmbeddedValuesInPatterns(String[] patterns)
Resolve placeholder values in the given array of patterns.void
setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
Set theContentNegotiationManager
to use to determine requested media types.void
setEmbeddedValueResolver(StringValueResolver resolver)
Set the StringValueResolver to use for resolving embedded definition values.void
setPathPrefixes(Map<String,Predicate<Class<?>>> prefixes)
Configure path prefixes to apply to controller methods.void
setUseRegisteredSuffixPatternMatch(boolean useRegisteredSuffixPatternMatch)
已过时。as of 5.2.4.void
setUseSuffixPatternMatch(boolean useSuffixPatternMatch)
已过时。as of 5.2.4.void
setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
Whether to match to URLs irrespective of the presence of a trailing slash.boolean
useRegisteredSuffixPatternMatch()
已过时。as of 5.2.4.boolean
useSuffixPatternMatch()
已过时。as of 5.2.4.boolean
useTrailingSlashMatch()
Whether to match to URLs irrespective of the presence of a trailing slash.从类继承的方法 org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping
getHandlerInternal, getMappingComparator, getMappingPathPatterns, getMatchingMapping, handleMatch, handleNoMatch
从类继承的方法 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping
createHandlerMethod, detectHandlerMethods, getCandidateBeanNames, getCorsConfiguration, getHandlerMethods, getHandlerMethodsForMappingName, getNamingStrategy, handlerMethodsInitialized, hasCorsConfigurationSource, initHandlerMethods, lookupHandlerMethod, processCandidateBean, setDetectHandlerMethodsInAncestorContexts, setHandlerMethodMappingNamingStrategy, unregisterMapping
从类继承的方法 org.springframework.web.servlet.handler.AbstractHandlerMapping
adaptInterceptor, detectMappedInterceptors, extendInterceptors, formatMappingName, getAdaptedInterceptors, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initApplicationContext, initInterceptors, setAlwaysUseFullPath, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper
从类继承的方法 org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
从类继承的方法 org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContext
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.springframework.web.servlet.HandlerMapping
getHandler
构造器详细资料
RequestMappingHandlerMapping
public RequestMappingHandlerMapping()
方法详细资料
setUseSuffixPatternMatch
@Deprecated public void setUseSuffixPatternMatch(boolean useSuffixPatternMatch)
已过时。as of 5.2.4. See class level comment about deprecation of path extension config options. As there is no replacement for this method, for the time being it's necessary to set it tofalse
. In 5.3 whenfalse
becomes the default, use of this property will no longer be necessary.Whether to use suffix pattern match (".*") when matching patterns to requests. If enabled a method mapped to "/users" also matches to "/users.*".The default value is
true
.Also see
setUseRegisteredSuffixPatternMatch(boolean)
for more fine-grained control over specific suffixes to allow.
setUseRegisteredSuffixPatternMatch
@Deprecated public void setUseRegisteredSuffixPatternMatch(boolean useRegisteredSuffixPatternMatch)
已过时。as of 5.2.4. See class level comment about deprecation of path extension config options.Whether suffix pattern matching should work only against path extensions explicitly registered with theContentNegotiationManager
. This is generally recommended to reduce ambiguity and to avoid issues such as when a "." appears in the path for other reasons.By default this is set to "false".
setUseTrailingSlashMatch
public void setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
Whether to match to URLs irrespective of the presence of a trailing slash. If enabled a method mapped to "/users" also matches to "/users/".The default value is
true
.
setPathPrefixes
public void setPathPrefixes(Map<String,Predicate<Class<?>>> prefixes)
Configure path prefixes to apply to controller methods.Prefixes are used to enrich the mappings of every
@RequestMapping
method whose controller type is matched by the correspondingPredicate
. The prefix for the first matching predicate is used.Consider using
HandlerTypePredicate
to group controllers.- 参数:
prefixes
- a map with path prefixes as key- 从以下版本开始:
- 5.1
getPathPrefixes
public Map<String,Predicate<Class<?>>> getPathPrefixes()
The configured path prefixes as a read-only, possibly empty map.- 从以下版本开始:
- 5.1
setContentNegotiationManager
public void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
Set theContentNegotiationManager
to use to determine requested media types. If not set, the default constructor is used.
getContentNegotiationManager
public ContentNegotiationManager getContentNegotiationManager()
Return the configuredContentNegotiationManager
.
setEmbeddedValueResolver
public void setEmbeddedValueResolver(StringValueResolver resolver)
从接口复制的说明:EmbeddedValueResolverAware
Set the StringValueResolver to use for resolving embedded definition values.
afterPropertiesSet
public void afterPropertiesSet()
从类复制的说明:AbstractHandlerMethodMapping
Detects handler methods at initialization.
useSuffixPatternMatch
@Deprecated public boolean useSuffixPatternMatch()
已过时。as of 5.2.4. See class-level note on the deprecation of path extension config options.Whether to use registered suffixes for pattern matching.
useRegisteredSuffixPatternMatch
@Deprecated public boolean useRegisteredSuffixPatternMatch()
已过时。as of 5.2.4. See class-level note on the deprecation of path extension config options.Whether to use registered suffixes for pattern matching.
useTrailingSlashMatch
public boolean useTrailingSlashMatch()
Whether to match to URLs irrespective of the presence of a trailing slash.
getFileExtensions
@Nullable @Deprecated public List<String> getFileExtensions()
已过时。as of 5.2.4. See class-level note on the deprecation of path extension config options.Return the file extensions to use for suffix pattern matching.
isHandler
protected boolean isHandler(Class<?> beanType)
Whether the given type is a handler with handler methods.Expects a handler to have either a type-level @
Controller
annotation or a type-level @RequestMapping
annotation.- 指定者:
isHandler
在类中AbstractHandlerMethodMapping<RequestMappingInfo>
- 参数:
beanType
- the type of the bean being checked- 返回:
- "true" if this a handler type, "false" otherwise.
getMappingForMethod
@Nullable protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType)
Uses method and type-level @RequestMapping
annotations to create the RequestMappingInfo.- 指定者:
getMappingForMethod
在类中AbstractHandlerMethodMapping<RequestMappingInfo>
- 参数:
method
- the method to provide a mapping forhandlerType
- the handler type, possibly a sub-type of the method's declaring class- 返回:
- the created RequestMappingInfo, or
null
if the method does not have a@RequestMapping
annotation. - 另请参阅:
getCustomMethodCondition(Method)
,getCustomTypeCondition(Class)
getCustomTypeCondition
@Nullable protected RequestCondition<?> getCustomTypeCondition(Class<?> handlerType)
Provide a custom type-level request condition. The customRequestCondition
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 usingCompositeRequestCondition
to provide multiple custom conditions.- 参数:
handlerType
- the handler type for which to create the condition- 返回:
- the condition, or
null
getCustomMethodCondition
@Nullable protected RequestCondition<?> getCustomMethodCondition(Method method)
Provide a custom method-level request condition. The customRequestCondition
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 usingCompositeRequestCondition
to provide multiple custom conditions.- 参数:
method
- the handler method for which to create the condition- 返回:
- the condition, or
null
createRequestMappingInfo
protected RequestMappingInfo createRequestMappingInfo(RequestMapping requestMapping, @Nullable RequestCondition<?> customCondition)
Create aRequestMappingInfo
from the supplied@RequestMapping
annotation, which is either a directly declared annotation, a meta-annotation, or the synthesized result of merging annotation attributes within an annotation hierarchy.
resolveEmbeddedValuesInPatterns
protected String[] resolveEmbeddedValuesInPatterns(String[] patterns)
Resolve placeholder values in the given array of patterns.- 返回:
- a new array with updated patterns
registerMapping
public void registerMapping(RequestMappingInfo mapping, Object handler, Method method)
从类复制的说明:AbstractHandlerMethodMapping
Register the given mapping.This method may be invoked at runtime after initialization has completed.
- 覆盖:
registerMapping
在类中AbstractHandlerMethodMapping<RequestMappingInfo>
- 参数:
mapping
- the mapping for the handler methodhandler
- the handlermethod
- the method
registerHandlerMethod
protected void registerHandlerMethod(Object handler, Method method, RequestMappingInfo mapping)
从类复制的说明:AbstractHandlerMethodMapping
Register a handler method and its unique mapping. Invoked at startup for each detected handler method.- 覆盖:
registerHandlerMethod
在类中AbstractHandlerMethodMapping<RequestMappingInfo>
- 参数:
handler
- the bean name of the handler or the handler instancemethod
- the method to registermapping
- the mapping conditions associated with the handler method
match
public RequestMatchResult match(HttpServletRequest request, String pattern)
从接口复制的说明:MatchableHandlerMapping
Determine whether the given request matches the request criteria.- 指定者:
match
在接口中MatchableHandlerMapping
- 参数:
request
- the current requestpattern
- the pattern to match- 返回:
- the result from request matching, or
null
if none
initCorsConfiguration
protected CorsConfiguration initCorsConfiguration(Object handler, Method method, RequestMappingInfo mappingInfo)
从类复制的说明:AbstractHandlerMethodMapping
Extract and return the CORS configuration for the mapping.