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:
Aware
,ApplicationContextAware
,Ordered
,ServletContextAware
,MatchableHandlerMapping
,HandlerMapping
- Direct Known Subclasses:
AbstractControllerUrlHandlerMapping
,BeanNameUrlHandlerMapping
,DefaultAnnotationHandlerMapping
public abstract class AbstractDetectingUrlHandlerMapping extends AbstractUrlHandlerMapping
Abstract implementation of theHandlerMapping
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.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, 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
All Methods Instance Methods Abstract Methods Concrete Methods 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 thedetectHandlers()
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, getRootHandler, lookupHandler, match, registerHandler, registerHandler, setLazyInitHandlers, setRootHandler, setUseTrailingSlashMatch, supportsTypeLevelMappings, useTrailingSlashMatch, validateHandler
Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping
adaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getCorsConfiguration, getCorsConfigurations, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initInterceptors, setAlwaysUseFullPath, setCorsConfigurations, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, 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
Methods inherited from interface org.springframework.web.servlet.HandlerMapping
getHandler
Constructor Detail
AbstractDetectingUrlHandlerMapping
public AbstractDetectingUrlHandlerMapping()
Method Detail
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 ApplicationContextException
Calls thedetectHandlers()
method in addition to the superclass's initialization.- Overrides:
initApplicationContext
in classAbstractHandlerMapping
- Throws:
ApplicationContextException
- in case of initialization errors- See Also:
AbstractHandlerMapping.extendInterceptors(java.util.List)
,AbstractHandlerMapping.initInterceptors()
detectHandlers
protected void detectHandlers() throws 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:
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
null
or an empty array if none