Package org.springframework.web.servlet.handler

# Class AbstractDetectingUrlHandlerMapping

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

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.context.ApplicationContextAware`, `org.springframework.core.Ordered`, `org.springframework.web.context.ServletContextAware`, `MatchableHandlerMapping`, `HandlerMapping`

Direct Known Subclasses:
  `BeanNameUrlHandlerMapping`

public abstract class AbstractDetectingUrlHandlerMapping extends AbstractUrlHandlerMapping
Abstract implementation of the `HandlerMapping` interface, detecting URL mappings for handler beans through introspection of all defined beans in the application context.

Since:
  2.5
Author:
  Juergen Hoeller
See Also:
  - `determineUrlsForHandler(java.lang.String)`

## Field Summary

### Fields inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping

`mappingsLogger`

### Fields inherited from class org.springframework.context.support.ApplicationObjectSupport

`logger`

### Fields inherited from interface 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`

### Fields inherited from interface org.springframework.core.Ordered

`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

## Constructor Summary

Constructors
Constructor
Description
`AbstractDetectingUrlHandlerMapping()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`detectHandlers()`
Register all handlers found in the current ApplicationContext.
`protected abstract String[]`
`determineUrlsForHandler(String beanName)`
Determine the URLs for the given handler bean.
`void`
`initApplicationContext()`
Calls the `detectHandlers()` method in addition to the superclass's initialization.
`void`
`setDetectHandlersInAncestorContexts(boolean detectHandlersInAncestorContexts)`
Set whether to detect handler beans in ancestor ApplicationContexts.

### Methods inherited from class org.springframework.web.servlet.handler.AbstractUrlHandlerMapping

`buildPathExposingHandler, exposePathWithinMapping, exposeUriTemplateVariables, getHandlerInternal, getHandlerMap, getPathPatternHandlerMap, getRootHandler, lookupHandler, lookupHandler, match, registerHandler, registerHandler, setLazyInitHandlers, setPatternParser, setRootHandler, setUseTrailingSlashMatch, supportsTypeLevelMappings, unregisterHandler, useTrailingSlashMatch, validateHandler`

### Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping

`adaptInterceptor, detectMappedInterceptors, extendInterceptors, formatMappingName, getAdaptedInterceptors, getCorsConfiguration, getCorsConfigurationSource, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getPatternParser, getUrlPathHelper, hasCorsConfigurationSource, initInterceptors, initLookupPath, setAlwaysUseFullPath, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper, usesPathPatterns`

### 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, obtainApplicationContext, requiredContextClass, setApplicationContext`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.web.servlet.HandlerMapping

`getHandler, usesPathPatterns`

### Methods inherited from interface org.springframework.web.servlet.handler.MatchableHandlerMapping

`getPatternParser`

## Constructor Details

### AbstractDetectingUrlHandlerMapping

public AbstractDetectingUrlHandlerMapping()

## Method Details

### setDetectHandlersInAncestorContexts

public void setDetectHandlersInAncestorContexts(boolean detectHandlersInAncestorContexts)
Set whether to detect handler beans in ancestor ApplicationContexts.

Default is "false": Only handler beans in the current ApplicationContext will be detected, i.e. only in the context that this HandlerMapping itself is defined in (typically the current DispatcherServlet's context).

Switch this flag on to detect handler beans in ancestor contexts (typically the Spring root WebApplicationContext) as well.

### initApplicationContext

public void initApplicationContext() throws org.springframework.context.ApplicationContextException
Calls the `detectHandlers()` method in addition to the superclass's initialization.

Overrides:
  `initApplicationContext` in class `AbstractHandlerMapping`
Throws:
  `org.springframework.context.ApplicationContextException`
See Also:
  - `AbstractHandlerMapping.extendInterceptors(java.util.List)`
  - `AbstractHandlerMapping.initInterceptors()`

### detectHandlers

protected void detectHandlers() throws org.springframework.beans.BeansException
Register all handlers found in the current ApplicationContext.

The actual URL determination for a handler is up to the concrete `determineUrlsForHandler(String)` implementation. A bean for which no such URLs could be determined is simply not considered a handler.

Throws:
  `org.springframework.beans.BeansException` - if the handler couldn't be registered
See Also:
  - `determineUrlsForHandler(String)`

### determineUrlsForHandler

protected abstract String[] determineUrlsForHandler(String beanName)
Determine the URLs for the given handler bean.

Parameters:
  `beanName` - the name of the candidate bean
Returns:
  the URLs determined for the bean, or an empty array if none