## org.springframework.web.servlet.mvc.support
Class AbstractControllerUrlHandlerMapping

    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.AbstractUrlHandlerMapping
                      org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping
                          org.springframework.web.servlet.mvc.support.AbstractControllerUrlHandlerMapping

All Implemented Interfaces:
  Aware, ApplicationContextAware, Ordered, ServletContextAware, HandlerMapping

Direct Known Subclasses:
  ControllerBeanNameHandlerMapping, ControllerClassNameHandlerMapping

    public abstract class AbstractControllerUrlHandlerMapping

extends AbstractDetectingUrlHandlerMapping

Base class for `HandlerMapping` implementations that derive URL paths according to conventions for specific controller types.

Since:
  2.5.3
Author:
  Juergen Hoeller
See Also:
  `ControllerClassNameHandlerMapping`, `ControllerBeanNameHandlerMapping`

Field Summary

Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
`logger`

Fields inherited from interface org.springframework.web.servlet.HandlerMapping
`BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE`

Fields inherited from interface org.springframework.core.Ordered
`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

Constructor Summary
`AbstractControllerUrlHandlerMapping()`

Method Summary
`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.

Methods inherited from class org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping
`detectHandlers, initApplicationContext, setDetectHandlersInAncestorContexts`

Methods inherited from class org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
`buildPathExposingHandler, exposePathWithinMapping, exposeUriTemplateVariables, getHandlerInternal, getHandlerMap, getRootHandler, lookupHandler, registerHandler, registerHandler, setLazyInitHandlers, setRootHandler, supportsTypeLevelMappings, validateHandler`

Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping
`adaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initInterceptors, setAlwaysUseFullPath, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setUrlDecode, setUrlPathHelper`

Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
`getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext`

Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
`getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AbstractControllerUrlHandlerMapping

    public AbstractControllerUrlHandlerMapping()

Method Detail

### setIncludeAnnotatedControllers

    public void setIncludeAnnotatedControllers(boolean includeAnnotatedControllers)

  Set whether to activate or deactivate detection of annotated controllers.

### setExcludedPackages

    public void setExcludedPackages(String[] excludedPackages)

  Specify Java packages that should be excluded from this mapping. Any classes in such a package (or any of its subpackages) will be ignored by this HandlerMapping.

  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.

### setExcludedClasses

    public void setExcludedClasses(Class[] excludedClasses)

  Specify controller classes that should be excluded from this mapping. Any such classes will simply be ignored by this HandlerMapping.

### determineUrlsForHandler

    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`.

  Specified by:
    `determineUrlsForHandler` in class `AbstractDetectingUrlHandlerMapping`
  Parameters:
    `beanName` - the name of the candidate bean
  Returns:
    the URLs determined for the bean, or `null` or an empty array if none

### isEligibleForMapping

    protected boolean isEligibleForMapping(String beanName,
                                           Class beanClass)

  Determine whether the specified controller is excluded from this mapping.

  Parameters:
    `beanName` - the name of the controller bean
    `beanClass` - the concrete class of the controller bean
  Returns:
    whether the specified class is excluded
  See Also:
    `setExcludedPackages(java.lang.String[])`, `setExcludedClasses(java.lang.Class[])`

### isControllerType

    protected boolean isControllerType(Class beanClass)

  Determine whether the given bean class indicates a controller type that is supported by this mapping strategy.

  Parameters:
    `beanClass` - the class to introspect

### isMultiActionControllerType

    protected boolean isMultiActionControllerType(Class beanClass)

  Determine whether the given bean class indicates a controller type that dispatches to multiple action methods.

  Parameters:
    `beanClass` - the class to introspect

### buildUrlsForHandler

    protected abstract String[] buildUrlsForHandler(String beanName,
                                                    Class beanClass)

  Abstract template method to be implemented by subclasses.

  Parameters:
    `beanName` - the name of the bean
    `beanClass` - the type of the bean
  Returns:
    the URLs determined for the bean