public class FiberRequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter implements BeanFactoryAware, InitializingBean, Ordered
An AbstractHandlerMethodAdapter that supports HandlerMethods with the signature – method argument and return types, defined in @RequestMapping.
Support for custom argument and return value types can be added via setCustomArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>) and setCustomReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>). Or alternatively to re-configure all argument and return value types use setArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>) and setReturnValueHandlers(List).
HandlerMethodArgumentResolver,
HandlerMethodReturnValueHandler| Modifier and Type | Field and Description |
|---|---|
static ReflectionUtils.MethodFilter |
INIT_BINDER_METHODS
MethodFilter that matches
@InitBinder methods. |
static ReflectionUtils.MethodFilter |
MODEL_ATTRIBUTE_METHODS
MethodFilter that matches
@ModelAttribute methods. |
METHOD_GET, METHOD_HEAD, METHOD_POSTloggerHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description |
|---|
FiberRequestMappingHandlerAdapter()
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet() |
protected InitBinderDataBinderFactory |
createDataBinderFactory(List<InvocableHandlerMethod> binderMethods)
Template method to create a new InitBinderDataBinderFactory instance.
|
List<HandlerMethodArgumentResolver> |
getArgumentResolvers()
Return the configured argument resolvers, or possibly
null if not initialized yet via afterPropertiesSet(). |
protected ConfigurableBeanFactory |
getBeanFactory()
Return the owning factory of this bean instance, or
null. |
List<HandlerMethodArgumentResolver> |
getCustomArgumentResolvers()
Return the custom argument resolvers, or
null. |
List<HandlerMethodReturnValueHandler> |
getCustomReturnValueHandlers()
Return the custom return value handlers, or
null. |
List<HandlerMethodArgumentResolver> |
getInitBinderArgumentResolvers()
Return the argument resolvers for
@InitBinder methods, or possibly null if not initialized yet via afterPropertiesSet(). |
protected long |
getLastModifiedInternal(HttpServletRequest request,
HandlerMethod handlerMethod)
This implementation always returns -1.
|
List<HttpMessageConverter<?>> |
getMessageConverters()
Return the configured message body converters.
|
List<ModelAndViewResolver> |
getModelAndViewResolvers()
Return the configured
ModelAndViewResolvers, or null. |
List<HandlerMethodReturnValueHandler> |
getReturnValueHandlers()
Return the configured handlers, or possibly
null if not initialized yet via afterPropertiesSet(). |
WebBindingInitializer |
getWebBindingInitializer()
Return the configured WebBindingInitializer, or
null. |
protected ModelAndView |
handleInternal(HttpServletRequest request,
HttpServletResponse response,
HandlerMethod handlerMethod) |
void |
setArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Configure the complete list of supported argument types thus overriding the resolvers that would otherwise be configured by default.
|
void |
setAsyncRequestTimeout(long timeout)
Specify the amount of time, in milliseconds, before concurrent handling should time out.
|
void |
setBeanFactory(BeanFactory beanFactory) |
void |
setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)
Cache content produced by
@SessionAttributes annotated handlers for the given number of seconds. |
void |
setCallableInterceptors(List<CallableProcessingInterceptor> interceptors)
Configure
CallableProcessingInterceptor’s to register on async requests. |
void |
setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
Set the
ContentNegotiationManager to use to determine requested media types. |
void |
setCustomArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Provide resolvers for custom argument types.
|
void |
setCustomReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Provide handlers for custom return value types.
|
void |
setDeferredResultInterceptors(List<DeferredResultProcessingInterceptor> interceptors)
Configure
DeferredResultProcessingInterceptor’s to register on async requests. |
void |
setIgnoreDefaultModelOnRedirect(boolean ignoreDefaultModelOnRedirect)
By default the content of the “default” model is used both during rendering and redirect scenarios.
|
void |
setInitBinderArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Configure the supported argument types in
@InitBinder methods. |
void |
setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Provide the converters to use in argument resolvers and return value handlers that support reading and/or writing to the body of the request and response.
|
void |
setModelAndViewResolvers(List<ModelAndViewResolver> modelAndViewResolvers)
Provide custom
ModelAndViewResolvers. |
void |
setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)
Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g.
|
void |
setReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Configure the complete list of supported return value types thus overriding handlers that would otherwise be configured by default.
|
void |
setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)
Specify the strategy to store session attributes with.
|
void |
setSynchronizeOnSession(boolean synchronizeOnSession)
Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client.
|
void |
setTaskExecutor(AsyncTaskExecutor taskExecutor)
Set the default
AsyncTaskExecutor to use when a controller method return a Callable. |
void |
setWebBindingInitializer(WebBindingInitializer webBindingInitializer)
Provide a WebBindingInitializer with “global” initialization to apply to every DataBinder instance.
|
protected boolean |
supportsInternal(HandlerMethod handlerMethod)
Always return
true since any method argument and return value type will be processed in some way. |
getLastModified, getOrder, handle, setOrder, supportsapplyCacheControl, applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, checkRequest, getCacheControl, getCacheSeconds, getSupportedMethods, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, prepareResponse, preventCaching, setAlwaysMustRevalidate, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeadergetServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextgetApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContextpublic static final ReflectionUtils.MethodFilter INIT_BINDER_METHODS
MethodFilter that matches @InitBinder methods.
public static final ReflectionUtils.MethodFilter MODEL_ATTRIBUTE_METHODS
MethodFilter that matches @ModelAttribute methods.
public FiberRequestMappingHandlerAdapter()
Default constructor.
public void setCustomArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Provide resolvers for custom argument types. Custom resolvers are ordered after built-in ones. To override the built-in support for argument resolution use setArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>) instead.
public List<HandlerMethodArgumentResolver> getCustomArgumentResolvers()
Return the custom argument resolvers, or null.
public void setArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Configure the complete list of supported argument types thus overriding the resolvers that would otherwise be configured by default.
public List<HandlerMethodArgumentResolver> getArgumentResolvers()
Return the configured argument resolvers, or possibly null if not initialized yet via afterPropertiesSet().
public void setInitBinderArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)
Configure the supported argument types in @InitBinder methods.
public List<HandlerMethodArgumentResolver> getInitBinderArgumentResolvers()
Return the argument resolvers for @InitBinder methods, or possibly null if not initialized yet via afterPropertiesSet().
public void setCustomReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Provide handlers for custom return value types. Custom handlers are ordered after built-in ones. To override the built-in support for return value handling use setReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>).
public List<HandlerMethodReturnValueHandler> getCustomReturnValueHandlers()
Return the custom return value handlers, or null.
public void setReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers)
Configure the complete list of supported return value types thus overriding handlers that would otherwise be configured by default.
public List<HandlerMethodReturnValueHandler> getReturnValueHandlers()
Return the configured handlers, or possibly null if not initialized yet via afterPropertiesSet().
public void setModelAndViewResolvers(List<ModelAndViewResolver> modelAndViewResolvers)
Provide custom ModelAndViewResolvers.
Note: This method is available for backwards compatibility only. However, it is recommended to re-write a ModelAndViewResolver as HandlerMethodReturnValueHandler. An adapter between the two interfaces is not possible since the HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter) method cannot be implemented. Hence ModelAndViewResolvers are limited to always being invoked at the end after all other return value handlers have been given a chance.
A HandlerMethodReturnValueHandler provides better access to the return type and controller method information and can be ordered freely relative to other return value handlers.
public List<ModelAndViewResolver> getModelAndViewResolvers()
Return the configured ModelAndViewResolvers, or null.
public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Provide the converters to use in argument resolvers and return value handlers that support reading and/or writing to the body of the request and response.
public void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
Set the ContentNegotiationManager to use to determine requested media types. If not set, the default constructor is used.
public List<HttpMessageConverter<?>> getMessageConverters()
Return the configured message body converters.
public void setWebBindingInitializer(WebBindingInitializer webBindingInitializer)
Provide a WebBindingInitializer with “global” initialization to apply to every DataBinder instance.
public WebBindingInitializer getWebBindingInitializer()
Return the configured WebBindingInitializer, or null.
public void setTaskExecutor(AsyncTaskExecutor taskExecutor)
Set the default AsyncTaskExecutor to use when a controller method return a Callable. Controller methods can override this default on a per-request basis by returning an WebAsyncTask.
By default a SimpleAsyncTaskExecutor instance is used. It’s recommended to change that default in production as the simple executor does not re-use threads.
public void setAsyncRequestTimeout(long timeout)
Specify the amount of time, in milliseconds, before concurrent handling should time out. In Servlet 3, the timeout begins after the main request processing thread has exited and ends when the request is dispatched again for further processing of the concurrently produced result.
If this value is not set, the default timeout of the underlying implementation is used, e.g. 10 seconds on Tomcat with Servlet 3.
timeout - the timeout value in millisecondspublic void setCallableInterceptors(List<CallableProcessingInterceptor> interceptors)
Configure CallableProcessingInterceptor’s to register on async requests.
interceptors - the interceptors to registerpublic void setDeferredResultInterceptors(List<DeferredResultProcessingInterceptor> interceptors)
Configure DeferredResultProcessingInterceptor’s to register on async requests.
interceptors - the interceptors to registerpublic void setIgnoreDefaultModelOnRedirect(boolean ignoreDefaultModelOnRedirect)
By default the content of the “default” model is used both during rendering and redirect scenarios. Alternatively a controller method can declare a RedirectAttributes argument and use it to provide attributes for a redirect.
Setting this flag to true guarantees the “default” model is never used in a redirect scenario even if a RedirectAttributes argument is not declared. Setting it to false means the “default” model may be used in a redirect if the controller method doesn’t declare a RedirectAttributes argument.
The default setting is false but new applications should consider setting it to true.
RedirectAttributespublic void setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)
Specify the strategy to store session attributes with. The default is DefaultSessionAttributeStore, storing session attributes in the HttpSession with the same attribute name as in the model.
public void setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)
Cache content produced by @SessionAttributes annotated handlers for the given number of seconds. Default is 0, preventing caching completely.
In contrast to the “cacheSeconds” property which will apply to all general handlers (but not to @SessionAttributes annotated handlers), this setting will apply to @SessionAttributes handlers only.
public void setSynchronizeOnSession(boolean synchronizeOnSession)
Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client.
More specifically, the execution of the handleRequestInternal method will get synchronized if this flag is “true”. The best available session mutex will be used for the synchronization; ideally, this will be a mutex exposed by HttpSessionMutexListener.
The session mutex is guaranteed to be the same object during the entire lifetime of the session, available under the key defined by the SESSION_MUTEX_ATTRIBUTE constant. It serves as a safe reference to synchronize on for locking on the current session.
In many cases, the HttpSession reference itself is a safe mutex as well, since it will always be the same object reference for the same active logical session. However, this is not guaranteed across different servlet containers; the only 100% safe way is a session mutex.
public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)
Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g. for default attribute names).
Default is a DefaultParameterNameDiscoverer.
public void setBeanFactory(BeanFactory beanFactory)
A ConfigurableBeanFactory is expected for resolving expressions in method argument default values.
setBeanFactory in interface BeanFactoryAwareprotected ConfigurableBeanFactory getBeanFactory()
Return the owning factory of this bean instance, or null.
public void afterPropertiesSet()
afterPropertiesSet in interface InitializingBeanprotected boolean supportsInternal(HandlerMethod handlerMethod)
Always return true since any method argument and return value type will be processed in some way. A method argument not recognized by any HandlerMethodArgumentResolver is interpreted as a request parameter if it is a simple type, or as a model attribute otherwise. A return value not recognized by any HandlerMethodReturnValueHandler will be interpreted as a model attribute.
supportsInternal in class AbstractHandlerMethodAdapterprotected long getLastModifiedInternal(HttpServletRequest request, HandlerMethod handlerMethod)
This implementation always returns -1. An @RequestMapping method can calculate the lastModified value, call WebRequest.checkNotModified(long), and return null if the result of that call is true.
getLastModifiedInternal in class AbstractHandlerMethodAdapterprotected final ModelAndView handleInternal(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod) throws Exception
handleInternal in class AbstractHandlerMethodAdapterExceptionprotected InitBinderDataBinderFactory createDataBinderFactory(List<InvocableHandlerMethod> binderMethods) throws Exception
Template method to create a new InitBinderDataBinderFactory instance.
The default implementation creates a ServletRequestDataBinderFactory. This can be overridden for custom ServletRequestDataBinder subclasses.
binderMethods - @InitBinder methodsException - in case of invalid state or arguments