org.springframework.web.portlet.mvc.annotation
Class DefaultAnnotationHandlerMapping
java.lang.Object
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.portlet.handler.AbstractHandlerMapping
org.springframework.web.portlet.handler.AbstractMapBasedHandlerMapping
org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping
- All Implemented Interfaces:
- ApplicationContextAware, Ordered, HandlerMapping
public class DefaultAnnotationHandlerMapping
- extends AbstractMapBasedHandlerMapping
Implementation of the HandlerMapping
interface that maps handlers based on portlet modes expressed through the
RequestMapping
annotation at the type or method level.
Registered by default in DispatcherPortlet
on Java 5+. NOTE: If you define custom HandlerMapping beans in your
DispatcherPortlet context, you need to add a DefaultAnnotationHandlerMapping bean
explicitly, since custom HandlerMapping beans replace the default mapping strategies.
Defining a DefaultAnnotationHandlerMapping also allows for registering custom
interceptors:
<bean class="org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
...
</property>
</bean>
Annotated controllers are usually marked with the Controller
stereotype
at the type level. This is not strictly necessary when RequestMapping
is
applied at the type level (since such a handler usually implements the
Controller
interface). However,
Controller
is required for detecting RequestMapping
annotations
at the method level.
NOTE: Method-level mappings are only allowed to narrow the mapping
expressed at the class level (if any). Portlet modes need to uniquely map onto
specific handler beans, with any given portlet mode only allowed to be mapped
onto one specific handler bean (not spread across multiple handler beans).
It is strongly recommended to co-locate related handler methods into the same bean.
The AnnotationMethodHandlerAdapter
is responsible for processing
annotated handler methods, as mapped by this HandlerMapping. For
RequestMapping
at the type level, specific HandlerAdapters such as
SimpleControllerHandlerAdapter
apply.
- Since:
- 2.5
- Author:
- Juergen Hoeller
- See Also:
RequestMapping
,
AnnotationMethodHandlerAdapter
Method Summary |
protected boolean |
detectHandlerMethods(Class handlerType,
String beanName,
RequestMapping typeMapping)
Derive portlet mode mappings from the handler's method-level mappings. |
protected void |
detectHandlers()
Register all handlers specified in the Portlet mode map for the corresponding modes. |
protected Object |
getLookupKey(javax.portlet.PortletRequest request)
Uses the current PortletMode as lookup key. |
void |
initApplicationContext()
Calls the registerHandlers method in addition
to the superclass's initialization. |
Methods inherited from class org.springframework.web.portlet.handler.AbstractHandlerMapping |
adaptInterceptor, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getOrder, initInterceptors, setApplyWebRequestInterceptorsToRenderPhaseOnly, setDefaultHandler, setInterceptors, setOrder |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DefaultAnnotationHandlerMapping
public DefaultAnnotationHandlerMapping()
initApplicationContext
public void initApplicationContext()
throws BeansException
- Calls the
registerHandlers
method in addition
to the superclass's initialization.
- Overrides:
initApplicationContext
in class AbstractHandlerMapping
- Throws:
ApplicationContextException
- in case of initialization errors
BeansException
- if thrown by ApplicationContext methods- See Also:
detectHandlers()
detectHandlers
protected void detectHandlers()
throws BeansException
- Register all handlers specified in the Portlet mode map for the corresponding modes.
- Throws:
BeansException
- if the handler couldn't be registered
detectHandlerMethods
protected boolean detectHandlerMethods(Class handlerType,
String beanName,
RequestMapping typeMapping)
- Derive portlet mode mappings from the handler's method-level mappings.
- Parameters:
handlerType
- the handler type to introspectbeanName
- the name of the bean introspectedtypeMapping
- the type level mapping (if any)
- Returns:
true
if at least 1 handler method has been registered;
false
otherwise
getLookupKey
protected Object getLookupKey(javax.portlet.PortletRequest request)
throws Exception
- Uses the current PortletMode as lookup key.
- Specified by:
getLookupKey
in class AbstractMapBasedHandlerMapping
- Parameters:
request
- current portlet request
- Returns:
- the lookup key (never
null
)
- Throws:
Exception
- if key computation failed
Copyright © 2002-2008 The Spring Framework.