|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.context.support.ApplicationObjectSupport org.springframework.web.context.support.WebApplicationObjectSupport org.springframework.web.servlet.handler.AbstractHandlerMapping
public abstract class AbstractHandlerMapping
Abstract base class for HandlerMapping
implementations. Supports ordering, a default handler, and handler interceptors.
Note: This base class does not support exposure of the
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
. Support for this attribute
is up to concrete subclasses, typically based on request URL mappings.
getHandlerInternal(javax.servlet.http.HttpServletRequest)
,
setDefaultHandler(java.lang.Object)
,
setInterceptors(java.lang.Object[])
,
HandlerInterceptor
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, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE |
Fields inherited from interface org.springframework.core.Ordered |
---|
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE |
Constructor Summary | |
---|---|
AbstractHandlerMapping()
|
Method Summary | |
---|---|
protected HandlerInterceptor |
adaptInterceptor(Object interceptor)
Adapt the given interceptor object to the HandlerInterceptor interface. |
protected void |
extendInterceptors(List<Object> interceptors)
Extension hook that subclasses can override to register additional interceptors, given the configured interceptors (see setInterceptors(java.lang.Object[]) ). |
protected HandlerInterceptor[] |
getAdaptedInterceptors()
Return the adapted interceptors as HandlerInterceptor array. |
Object |
getDefaultHandler()
Return the default handler for this handler mapping, or null if none. |
HandlerExecutionChain |
getHandler(HttpServletRequest request)
Look up a handler for the given request, falling back to the default handler if no specific one is found. |
protected HandlerExecutionChain |
getHandlerExecutionChain(Object handler,
HttpServletRequest request)
Build a HandlerExecutionChain for the given handler, including applicable interceptors. |
protected abstract Object |
getHandlerInternal(HttpServletRequest request)
Look up a handler for the given request, returning null if no
specific one is found. |
int |
getOrder()
Return the order value of this object, with a higher value meaning greater in terms of sorting. |
protected void |
initApplicationContext()
Initializes the interceptors. |
protected void |
initInterceptors()
Initialize the specified interceptors, adapting them where necessary. |
void |
setDefaultHandler(Object defaultHandler)
Set the default handler for this handler mapping. |
void |
setInterceptors(Object[] interceptors)
Set the interceptors to apply for all handlers mapped by this handler mapping. |
void |
setOrder(int order)
Specify the order value for this HandlerMapping bean. |
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 |
---|
public AbstractHandlerMapping()
Method Detail |
---|
public final void setOrder(int order)
Default value is Integer.MAX_VALUE
, meaning that it's non-ordered.
Ordered.getOrder()
public final int getOrder()
Ordered
Normally starting with 0, with Integer.MAX_VALUE
indicating the greatest value. Same order values will result
in arbitrary positions for the affected objects.
Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).
getOrder
in interface Ordered
public void setDefaultHandler(Object defaultHandler)
Default is null
, indicating no default handler.
public Object getDefaultHandler()
null
if none.
public void setInterceptors(Object[] interceptors)
Supported interceptor types are HandlerInterceptor and WebRequestInterceptor.
interceptors
- array of handler interceptors, or null
if noneadaptInterceptor(java.lang.Object)
,
HandlerInterceptor
,
WebRequestInterceptor
protected void initApplicationContext() throws BeansException
initApplicationContext
in class ApplicationObjectSupport
ApplicationContextException
- in case of initialization errors
BeansException
- if thrown by ApplicationContext methodsextendInterceptors(java.util.List)
,
initInterceptors()
protected void extendInterceptors(List<Object> interceptors)
setInterceptors(java.lang.Object[])
).
Will be invoked before initInterceptors()
adapts the specified
interceptors into HandlerInterceptor
instances.
The default implementation is empty.
interceptors
- the configured interceptor List (never null
),
allowing to add further interceptors before as well as after the existing
interceptorsprotected void initInterceptors()
setInterceptors(java.lang.Object[])
,
adaptInterceptor(java.lang.Object)
protected HandlerInterceptor adaptInterceptor(Object interceptor)
Supported interceptor types are HandlerInterceptor and WebRequestInterceptor. Each given WebRequestInterceptor will be wrapped in a WebRequestHandlerInterceptorAdapter. Can be overridden in subclasses.
interceptor
- the specified interceptor object
HandlerInterceptor
,
WebRequestInterceptor
,
WebRequestHandlerInterceptorAdapter
protected final HandlerInterceptor[] getAdaptedInterceptors()
null
if nonepublic final HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception
getHandler
in interface HandlerMapping
request
- current HTTP request
Exception
- if there is an internal errorgetHandlerInternal(javax.servlet.http.HttpServletRequest)
protected abstract Object getHandlerInternal(HttpServletRequest request) throws Exception
null
if no
specific one is found. This method is called by getHandler(javax.servlet.http.HttpServletRequest)
;
a null
return value will lead to the default handler, if one is set.
Note: This method may also return a pre-built HandlerExecutionChain
,
combining a handler object with dynamically determined interceptors.
Statically specified interceptors will get merged into such an existing chain.
request
- current HTTP request
null
if none found
Exception
- if there is an internal errorprotected HandlerExecutionChain getHandlerExecutionChain(Object handler, HttpServletRequest request)
The default implementation simply builds a standard HandlerExecutionChain with the given handler and this handler mapping's common interceptors. Subclasses may override this in order to extend/rearrange the list of interceptors.
NOTE: The passed-in handler object may be a raw handler or a pre-built HandlerExecutionChain. This method should handle those two cases explicitly, either building a new HandlerExecutionChain or extending the existing chain.
For simply adding an interceptor, consider calling super.getHandlerExecutionChain
and invoking HandlerExecutionChain.addInterceptor(org.springframework.web.servlet.HandlerInterceptor)
on the returned chain object.
handler
- the resolved handler instance (never null
)request
- current HTTP request
null
)getAdaptedInterceptors()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |