public abstract class AbstractControllerUrlHandlerMapping extends AbstractDetectingUrlHandlerMapping
HandlerMapping
implementations
that derive URL paths according to conventions for specific controller types.ControllerClassNameHandlerMapping
,
ControllerBeanNameHandlerMapping
Modifier and Type | Field and Description |
---|---|
private java.util.Set<java.lang.Class> |
excludedClasses |
private java.util.Set<java.lang.String> |
excludedPackages |
private ControllerTypePredicate |
predicate |
logger
BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
AbstractControllerUrlHandlerMapping() |
Modifier and Type | Method and Description |
---|---|
protected abstract java.lang.String[] |
buildUrlsForHandler(java.lang.String beanName,
java.lang.Class beanClass)
Abstract template method to be implemented by subclasses.
|
protected java.lang.String[] |
determineUrlsForHandler(java.lang.String beanName)
This implementation delegates to
buildUrlsForHandler(java.lang.String, java.lang.Class) ,
provided that isEligibleForMapping(java.lang.String, java.lang.Class) returns true . |
protected boolean |
isControllerType(java.lang.Class beanClass)
Determine whether the given bean class indicates a controller type
that is supported by this mapping strategy.
|
protected boolean |
isEligibleForMapping(java.lang.String beanName,
java.lang.Class beanClass)
Determine whether the specified controller is excluded from this mapping.
|
protected boolean |
isMultiActionControllerType(java.lang.Class beanClass)
Determine whether the given bean class indicates a controller type
that dispatches to multiple action methods.
|
void |
setExcludedClasses(java.lang.Class[] excludedClasses)
Specify controller classes that should be excluded from this mapping.
|
void |
setExcludedPackages(java.lang.String[] excludedPackages)
Specify Java packages that should be excluded from this mapping.
|
void |
setIncludeAnnotatedControllers(boolean includeAnnotatedControllers)
Set whether to activate or deactivate detection of annotated controllers.
|
detectHandlers, initApplicationContext, setDetectHandlersInAncestorContexts
buildPathExposingHandler, exposePathWithinMapping, exposeUriTemplateVariables, getHandlerInternal, getHandlerMap, getRootHandler, lookupHandler, registerHandler, registerHandler, setLazyInitHandlers, setRootHandler, supportsTypeLevelMappings, validateHandler
adaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initInterceptors, setAlwaysUseFullPath, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext
private ControllerTypePredicate predicate
private java.util.Set<java.lang.String> excludedPackages
private java.util.Set<java.lang.Class> excludedClasses
public void setIncludeAnnotatedControllers(boolean includeAnnotatedControllers)
public void setExcludedPackages(java.lang.String[] excludedPackages)
Default is to exclude the entire "org.springframework.web.servlet.mvc"
package, including its subpackages, since none of Spring's out-of-the-box
Controller implementations is a reasonable candidate for this mapping strategy.
Such controllers are typically handled by a separate HandlerMapping,
e.g. a BeanNameUrlHandlerMapping
,
alongside this ControllerClassNameHandlerMapping for application controllers.
public void setExcludedClasses(java.lang.Class[] excludedClasses)
protected java.lang.String[] determineUrlsForHandler(java.lang.String beanName)
buildUrlsForHandler(java.lang.String, java.lang.Class)
,
provided that isEligibleForMapping(java.lang.String, java.lang.Class)
returns true
.determineUrlsForHandler
in class AbstractDetectingUrlHandlerMapping
beanName
- the name of the candidate beannull
or an empty array if noneprotected boolean isEligibleForMapping(java.lang.String beanName, java.lang.Class beanClass)
beanName
- the name of the controller beanbeanClass
- the concrete class of the controller beansetExcludedPackages(java.lang.String[])
,
setExcludedClasses(java.lang.Class[])
protected boolean isControllerType(java.lang.Class beanClass)
beanClass
- the class to introspectprotected boolean isMultiActionControllerType(java.lang.Class beanClass)
beanClass
- the class to introspectprotected abstract java.lang.String[] buildUrlsForHandler(java.lang.String beanName, java.lang.Class beanClass)
beanName
- the name of the beanbeanClass
- the type of the bean