public abstract class AbstractControllerUrlHandlerMapping extends AbstractDetectingUrlHandlerMapping
HandlerMapping
implementations
that derive URL paths according to conventions for specific controller types.ControllerClassNameHandlerMapping
,
ControllerBeanNameHandlerMapping
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 String[] |
buildUrlsForHandler(String beanName,
Class<?> beanClass)
Abstract template method to be implemented by subclasses.
|
protected String[] |
determineUrlsForHandler(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(Class<?> beanClass)
Determine whether the given bean class indicates a controller type
that is supported by this mapping strategy.
|
protected boolean |
isEligibleForMapping(String beanName,
Class<?> beanClass)
Determine whether the specified controller is excluded from this mapping.
|
protected boolean |
isMultiActionControllerType(Class<?> beanClass)
Determine whether the given bean class indicates a controller type
that dispatches to multiple action methods.
|
void |
setExcludedClasses(Class<?>... excludedClasses)
Specify controller classes that should be excluded from this mapping.
|
void |
setExcludedPackages(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
public void setIncludeAnnotatedControllers(boolean includeAnnotatedControllers)
public void setExcludedPackages(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(Class<?>... excludedClasses)
protected String[] determineUrlsForHandler(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(String beanName, 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(Class<?> beanClass)
beanClass
- the class to introspectprotected boolean isMultiActionControllerType(Class<?> beanClass)
beanClass
- the class to introspect