public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter implements BeanFactoryAware, InitializingBean
@RequestMapping
アノテーション付き HandlerMethods
をサポートする AbstractHandlerMethodAdapter
の拡張。setCustomArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>)
および setCustomReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>)
を介してカスタム引数および戻り値の型のサポートを追加できます。あるいは、すべての引数および戻り値の型を再構成するには、setArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>)
および setReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>)
を使用します。
HandlerMethodArgumentResolver
, HandlerMethodReturnValueHandler
修飾子と型 | フィールドと説明 |
---|---|
static ReflectionUtils.MethodFilter | INIT_BINDER_METHODS @InitBinder メソッドと一致する MethodFilter。 |
static ReflectionUtils.MethodFilter | MODEL_ATTRIBUTE_METHODS @ModelAttribute メソッドと一致する MethodFilter。 |
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POST
logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
RequestMappingHandlerAdapter() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected InitBinderDataBinderFactory | createDataBinderFactory(ListSE<InvocableHandlerMethod> binderMethods) 新しい InitBinderDataBinderFactory インスタンスを作成するためのテンプレートメソッド。 |
protected ServletInvocableHandlerMethod | createInvocableHandlerMethod(HandlerMethod handlerMethod) 指定された HandlerMethod 定義から ServletInvocableHandlerMethod を作成します。 |
ListSE<HandlerMethodArgumentResolver> | getArgumentResolvers() 設定済みの引数リゾルバーを返します。 afterPropertiesSet() を介してまだ初期化されていない場合は、null を返します。 |
protected ConfigurableBeanFactory | getBeanFactory() この Bean インスタンスの所有ファクトリを返します。存在しない場合は null を返します。 |
ListSE<HandlerMethodArgumentResolver> | getCustomArgumentResolvers() カスタム引数リゾルバー、または null を返します。 |
ListSE<HandlerMethodReturnValueHandler> | getCustomReturnValueHandlers() カスタム戻り値ハンドラー、または null を返します。 |
ListSE<HandlerMethodArgumentResolver> | getInitBinderArgumentResolvers() |
protected long | getLastModifiedInternal(HttpServletRequestEE request, HandlerMethod handlerMethod) この実装は常に -1 を返します。 |
ListSE<HttpMessageConverter<?>> | getMessageConverters() 構成されたメッセージ本文コンバーターを返します。 |
ListSE<ModelAndViewResolver> | getModelAndViewResolvers() 設定された ModelAndViewResolvers または null を返します。 |
ReactiveAdapterRegistry | getReactiveAdapterRegistry() アダプターの構成済みのリアクティブ型レジストリを返します。 |
ListSE<HandlerMethodReturnValueHandler> | getReturnValueHandlers() 構成済みのハンドラー、または afterPropertiesSet() を介してまだ初期化されていない場合は null を返します。 |
WebBindingInitializer | getWebBindingInitializer() 設定された WebBindingInitializer を返すか、存在しない場合は null を返します。 |
protected ModelAndView | handleInternal(HttpServletRequestEE request, HttpServletResponseEE response, HandlerMethod handlerMethod) 指定されたハンドラーメソッドを使用して、リクエストを処理します。 |
protected ModelAndView | invokeHandlerMethod(HttpServletRequestEE request, HttpServletResponseEE response, HandlerMethod handlerMethod) ビューリゾルバーが必要な場合は、 ModelAndView を準備する RequestMapping ハンドラーメソッドを呼び出します。 |
void | setArgumentResolvers(ListSE<HandlerMethodArgumentResolver> argumentResolvers) サポートされている引数型の完全なリストを構成して、デフォルトでは構成されないリゾルバーをオーバーライドします。 |
void | setAsyncRequestTimeout(long timeout) 並行処理がタイムアウトするまでの時間をミリ秒単位で指定します。 |
void | setBeanFactory(BeanFactory beanFactory) ConfigurableBeanFactory は、メソッド引数のデフォルト値の式を解決するために必要です。 |
void | setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers) @SessionAttributes アノテーション付きハンドラーによって生成されたコンテンツを、指定された秒数の間キャッシュします。 |
void | setCallableInterceptors(ListSE<CallableProcessingInterceptor> interceptors) 非同期リクエストで登録するように CallableProcessingInterceptor を構成します。 |
void | setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager) リクエストされたメディア型を判別するために使用する ContentNegotiationManager を設定します。 |
void | setCustomArgumentResolvers(ListSE<HandlerMethodArgumentResolver> argumentResolvers) カスタム引数型のリゾルバーを提供します。 |
void | setCustomReturnValueHandlers(ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) カスタム戻り値型のハンドラーを提供します。 |
void | setDeferredResultInterceptors(ListSE<DeferredResultProcessingInterceptor> interceptors) 非同期リクエストで登録するように DeferredResultProcessingInterceptor を構成します。 |
void | setIgnoreDefaultModelOnRedirect(boolean ignoreDefaultModelOnRedirect) デフォルトでは、"default" モデルのコンテンツは、レンダリングとリダイレクトの両方のシナリオで使用されます。 |
void | setInitBinderArgumentResolvers(ListSE<HandlerMethodArgumentResolver> argumentResolvers) @InitBinder メソッドでサポートされる引数型を構成します。 |
void | setMessageConverters(ListSE<HttpMessageConverter<?>> messageConverters) 引数リゾルバーで使用するコンバーターを提供し、リクエストおよびレスポンスの本文の読み取りおよび / または書き込みをサポートする値ハンドラーを返します。 |
void | setModelAndViewResolvers(ListSE<ModelAndViewResolver> modelAndViewResolvers) カスタム ModelAndViewResolvers を提供します。 |
void | setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer) 必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を設定します(例: |
void | setReactiveAdapterRegistry(ReactiveAdapterRegistry reactiveAdapterRegistry) コントローラーメソッドからの戻り値としてサポートされるように、反応ライブラリ型のレジストリを構成します。 |
void | setRequestBodyAdvice(ListSE<RequestBodyAdvice> requestBodyAdvice) 1 つ以上の RequestBodyAdvice インスタンスを追加して、リクエストが読み取られ、@RequestBody および HttpEntity メソッド引数に変換される前にインターセプトします。 |
void | setResponseBodyAdvice(ListSE<ResponseBodyAdvice<?>> responseBodyAdvice) @ResponseBody または ResponseEntity の戻り値がレスポンス本文に書き込まれる前に、1 つ以上の ResponseBodyAdvice インスタンスを追加してレスポンスをインターセプトします。 |
void | setReturnValueHandlers(ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) サポートされている戻り値の型の完全なリストを構成し、そうでなければデフォルトで構成されるハンドラーをオーバーライドします。 |
void | setSessionAttributeStore(SessionAttributeStore sessionAttributeStore) セッション属性を保存する戦略を指定します。 |
void | setSynchronizeOnSession(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。 |
void | setTaskExecutor(AsyncTaskExecutor taskExecutor) コントローラーメソッドが Callable SE を返すときに使用するデフォルトの AsyncTaskExecutor を設定します。 |
void | setWebBindingInitializer(WebBindingInitializer webBindingInitializer) WebBindingInitializer に「グローバル」初期化を提供して、すべての DataBinder インスタンスに適用します。 |
protected boolean | supportsInternal(HandlerMethod handlerMethod) メソッドの引数と戻り値の型は何らかの方法で処理されるため、常に true を返します。 |
getLastModified, getOrder, handle, setOrder, supports
applyCacheControl, applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, prepareResponse, preventCaching, setAlwaysMustRevalidate, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader, setVaryByRequestHeaders
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final ReflectionUtils.MethodFilter INIT_BINDER_METHODS
@InitBinder
メソッドと一致する MethodFilter。public static final ReflectionUtils.MethodFilter MODEL_ATTRIBUTE_METHODS
@ModelAttribute
メソッドと一致する MethodFilter。public void setCustomArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers)
setArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>)
を使用します。@Nullable public ListSE<HandlerMethodArgumentResolver> getCustomArgumentResolvers()
null
を返します。public void setArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers)
@Nullable public ListSE<HandlerMethodArgumentResolver> getArgumentResolvers()
afterPropertiesSet()
を介してまだ初期化されていない場合は、null
を返します。public void setInitBinderArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers)
@InitBinder
メソッドでサポートされる引数型を構成します。@Nullable public ListSE<HandlerMethodArgumentResolver> getInitBinderArgumentResolvers()
public void setCustomReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers)
setReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>)
を使用します。@Nullable public ListSE<HandlerMethodReturnValueHandler> getCustomReturnValueHandlers()
null
を返します。public void setReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers)
@Nullable public ListSE<HandlerMethodReturnValueHandler> getReturnValueHandlers()
afterPropertiesSet()
を介してまだ初期化されていない場合は null
を返します。public void setModelAndViewResolvers(@Nullable ListSE<ModelAndViewResolver> modelAndViewResolvers)
ModelAndViewResolvers
を提供します。 注意 : このメソッドは、下位互換性のためにのみ使用できます。ただし、ModelAndViewResolver
を HandlerMethodReturnValueHandler
に書き換えることをお勧めします。HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
メソッドを実装できないため、2 つのインターフェース間のアダプターは使用できません。ModelAndViewResolver
は、他のすべての戻り値ハンドラーにチャンスが与えられた後、常に最後に呼び出されるように制限されています。
HandlerMethodReturnValueHandler
は、戻り値の型とコントローラーメソッド情報へのより良いアクセスを提供し、他の戻り値ハンドラーと比較して自由にオーダーできます。
@Nullable public ListSE<ModelAndViewResolver> getModelAndViewResolvers()
ModelAndViewResolvers
または null
を返します。public void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
ContentNegotiationManager
を設定します。設定されていない場合、デフォルトのコンストラクターが使用されます。public void setMessageConverters(ListSE<HttpMessageConverter<?>> messageConverters)
public ListSE<HttpMessageConverter<?>> getMessageConverters()
public void setRequestBodyAdvice(@Nullable ListSE<RequestBodyAdvice> requestBodyAdvice)
RequestBodyAdvice
インスタンスを追加して、リクエストが読み取られ、@RequestBody
および HttpEntity
メソッド引数に変換される前にインターセプトします。public void setResponseBodyAdvice(@Nullable ListSE<ResponseBodyAdvice<?>> responseBodyAdvice)
@ResponseBody
または ResponseEntity
の戻り値がレスポンス本文に書き込まれる前に、1 つ以上の ResponseBodyAdvice
インスタンスを追加してレスポンスをインターセプトします。public void setWebBindingInitializer(@Nullable WebBindingInitializer webBindingInitializer)
@Nullable public WebBindingInitializer getWebBindingInitializer()
null
を返します。public void setTaskExecutor(AsyncTaskExecutor taskExecutor)
Callable
SE を返すときに使用するデフォルトの AsyncTaskExecutor
を設定します。コントローラーのメソッドは、WebAsyncTask
を返すことにより、リクエストごとにこのデフォルトをオーバーライドできます。 デフォルトでは、SimpleAsyncTaskExecutor
インスタンスが使用されます。シンプルなエグゼキュータはスレッドを再利用しないため、本番環境ではデフォルトを変更することをお勧めします。
public void setAsyncRequestTimeout(long timeout)
この値が設定されていない場合、基礎となる実装のデフォルトのタイムアウトが使用されます。
timeout
- ミリ秒単位のタイムアウト値 public void setCallableInterceptors(ListSE<CallableProcessingInterceptor> interceptors)
CallableProcessingInterceptor
を構成します。interceptors
- 登録するインターセプター public void setDeferredResultInterceptors(ListSE<DeferredResultProcessingInterceptor> interceptors)
DeferredResultProcessingInterceptor
を構成します。interceptors
- 登録するインターセプター public void setReactiveAdapterRegistry(ReactiveAdapterRegistry reactiveAdapterRegistry)
public ReactiveAdapterRegistry getReactiveAdapterRegistry()
public void setIgnoreDefaultModelOnRedirect(boolean ignoreDefaultModelOnRedirect)
RedirectAttributes
引数を宣言し、それを使用してリダイレクトの属性を提供できます。 このフラグを true
に設定すると、RedirectAttributes 引数が宣言されていなくても、"default" モデルがリダイレクトシナリオで使用されないことが保証されます。false
に設定すると、コントローラーメソッドが RedirectAttributes 引数を宣言しない場合、"default" モデルがリダイレクトで使用される可能性があります。
デフォルト設定は false
ですが、新しいアプリケーションでは true
に設定することを検討する必要があります。
RedirectAttributes
public void setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)
DefaultSessionAttributeStore
で、モデルと同じ属性名でセッション属性を HttpSession に格納します。public void setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)
@SessionAttributes
アノテーション付きハンドラーによって生成されたコンテンツを、指定された秒数の間キャッシュします。可能な値は次のとおりです。
すべての一般的なハンドラーに適用される (ただし、@SessionAttributes
アノテーション付きハンドラーには適用されない) "cacheSeconds" プロパティとは対照的に、この設定は @SessionAttributes
ハンドラーにのみ適用されます。
public void setSynchronizeOnSession(boolean synchronizeOnSession)
より具体的には、このフラグが "true" の場合、handleRequestInternal
メソッドの実行は同期されます。利用可能な最適なセッションミューテックスが同期に使用されます。理想的には、これは HttpSessionMutexListener によって公開されるミューテックスです。
セッションミューテックスは、セッションのライフタイム全体を通じて同じオブジェクトであることが保証されており、SESSION_MUTEX_ATTRIBUTE
定数で定義されたキーで使用できます。これは、現在のセッションのロックを同期するための安全な参照として機能します。
多くの場合、HttpSession 参照自体も、同じアクティブな論理セッションに対する常に同じオブジェクト参照になるため、安全なミューテックスです。ただし、これは異なるサーブレットコンテナー間では保証されません。唯一の 100% 安全な方法は、セッションミューテックスです。
public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)
デフォルトは DefaultParameterNameDiscoverer
です。
public void setBeanFactory(BeanFactory beanFactory)
ConfigurableBeanFactory
は、メソッド引数のデフォルト値の式を解決するために必要です。BeanFactoryAware
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。BeanInitializationException
@Nullable protected ConfigurableBeanFactory getBeanFactory()
null
を返します。public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
protected boolean supportsInternal(HandlerMethod handlerMethod)
true
を返します。HandlerMethodArgumentResolver で認識されないメソッド引数は、それが単純型の場合はリクエストパラメーターとして解釈され、それ以外の場合はモデル属性として解釈されます。HandlerMethodReturnValueHandler で認識されない戻り値は、モデル属性として解釈されます。AbstractHandlerMethodAdapter
の supportsInternal
handlerMethod
- チェックするハンドラーメソッド protected ModelAndView handleInternal(HttpServletRequestEE request, HttpServletResponseEE response, HandlerMethod handlerMethod) throws ExceptionSE
AbstractHandlerMethodAdapter
AbstractHandlerMethodAdapter
の handleInternal
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handlerMethod
- 使用するハンドラーメソッド。このオブジェクトは以前に AbstractHandlerMethodAdapter.supportsInternal(HandlerMethod)
このインターフェースに渡されている必要があり、このインターフェースは true
を返したはずです。null
ExceptionSE
- エラーの場合 protected long getLastModifiedInternal(HttpServletRequestEE request, HandlerMethod handlerMethod)
@RequestMapping
メソッドは lastModified 値を計算し、WebRequest.checkNotModified(long)
を呼び出し、その呼び出しの結果が true
の場合は null
を返します。AbstractHandlerMethodAdapter
の getLastModifiedInternal
request
- 現在の HTTP リクエスト handlerMethod
- 使用するハンドラーメソッド @Nullable protected ModelAndView invokeHandlerMethod(HttpServletRequestEE request, HttpServletResponseEE response, HandlerMethod handlerMethod) throws ExceptionSE
ModelAndView
を準備する RequestMapping
ハンドラーメソッドを呼び出します。ExceptionSE
createInvocableHandlerMethod(HandlerMethod)
protected ServletInvocableHandlerMethod createInvocableHandlerMethod(HandlerMethod handlerMethod)
HandlerMethod
定義から ServletInvocableHandlerMethod
を作成します。handlerMethod
- HandlerMethod
定義 ServletInvocableHandlerMethod
(またはそのカスタムサブクラス)protected InitBinderDataBinderFactory createDataBinderFactory(ListSE<InvocableHandlerMethod> binderMethods) throws ExceptionSE
デフォルトの実装では、ServletRequestDataBinderFactory を作成します。これは、カスタム ServletRequestDataBinder サブクラスでオーバーライドできます。
binderMethods
- @InitBinder
メソッド ExceptionSE
- 無効な状態または引数の場合