クラス RequestMappingHandlerAdapter
- 実装されたすべてのインターフェース:
Aware
、BeanFactoryAware
、InitializingBean
、ApplicationContextAware
、Ordered
、ServletContextAware
、HandlerAdapter
@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>)
を使用します。
- 導入:
- 3.1
- 作成者:
- Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
- 関連事項:
フィールドサマリー
修飾子と型フィールド説明static final ReflectionUtils.MethodFilter
@InitBinder
メソッドと一致する MethodFilter。static final ReflectionUtils.MethodFilter
@ModelAttribute
メソッドと一致する MethodFilter。クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたフィールド
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POST
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたフィールド
logger
インターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
protected InitBinderDataBinderFactory
createDataBinderFactory
(ListSE<InvocableHandlerMethod> binderMethods) 新しい InitBinderDataBinderFactory インスタンスを作成するためのテンプレートメソッド。protected ServletInvocableHandlerMethod
createInvocableHandlerMethod
(HandlerMethod handlerMethod) 指定されたHandlerMethod
定義からServletInvocableHandlerMethod
を作成します。設定済みの引数リゾルバーを返します。afterPropertiesSet()
を介してまだ初期化されていない場合は、null
を返します。protected ConfigurableBeanFactory
この Bean インスタンスの所有ファクトリを返します。存在しない場合はnull
を返します。カスタム引数リゾルバー、またはnull
を返します。カスタム戻り値ハンドラー、またはnull
を返します。protected long
getLastModifiedInternal
(HttpServletRequestEE request, HandlerMethod handlerMethod) この実装は常に -1 を返します。構成されたメッセージ本文コンバーターを返します。設定されたModelAndViewResolvers
またはnull
を返します。アダプターの構成済みのリアクティブ型レジストリを返します。構成済みのハンドラー、またはafterPropertiesSet()
を介してまだ初期化されていない場合はnull
を返します。設定された 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
非同期リクエストで登録するようにDeferredResultProcessingInterceptor
を構成します。void
setErrorResponseInterceptors
(ListSE<ErrorResponse.Interceptor> interceptors) RFC 9457ProblemDetail
エラーレスポンスをレンダリングするときに適用するErrorResponse.Interceptor
のリストを構成します。void
setIgnoreDefaultModelOnRedirect
(boolean ignoreDefaultModelOnRedirect) 使用すべきではありません。6.0 の時点で代替なし。削除すると、デフォルトのモデルはリダイレクト時に常に無視されます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
を返します。クラス org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter から継承されたメソッド
getLastModified, getOrder, handle, setOrder, supports
クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたメソッド
applyCacheControl, applyCacheSeconds, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isRequireSession, prepareResponse, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setVaryByRequestHeaders
クラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
フィールドの詳細
INIT_BINDER_METHODS
@InitBinder
メソッドと一致する MethodFilter。MODEL_ATTRIBUTE_METHODS
@ModelAttribute
メソッドと一致する MethodFilter。
コンストラクターの詳細
RequestMappingHandlerAdapter
public RequestMappingHandlerAdapter()
メソッドの詳細
setCustomArgumentResolvers
public void setCustomArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers) カスタム引数型のリゾルバーを提供します。カスタムリゾルバーは、組み込みリゾルバーの後にオーダーされます。引数解決の組み込みサポートをオーバーライドするには、代わりにsetArgumentResolvers(java.util.List<org.springframework.web.method.support.HandlerMethodArgumentResolver>)
を使用します。getCustomArgumentResolvers
カスタム引数リゾルバー、またはnull
を返します。setArgumentResolvers
サポートされている引数型の完全なリストを構成して、デフォルトでは構成されないリゾルバーをオーバーライドします。getArgumentResolvers
設定済みの引数リゾルバーを返します。afterPropertiesSet()
を介してまだ初期化されていない場合は、null
を返します。setInitBinderArgumentResolvers
public void setInitBinderArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers) @InitBinder
メソッドでサポートされる引数型を構成します。getInitBinderArgumentResolvers
setCustomReturnValueHandlers
public void setCustomReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) カスタム戻り値型のハンドラーを提供します。カスタムハンドラーは、組み込みハンドラーの後にオーダーされます。戻り値の処理の組み込みサポートをオーバーライドするには、setReturnValueHandlers(java.util.List<org.springframework.web.method.support.HandlerMethodReturnValueHandler>)
を使用します。getCustomReturnValueHandlers
カスタム戻り値ハンドラー、またはnull
を返します。setReturnValueHandlers
public void setReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) サポートされている戻り値の型の完全なリストを構成し、そうでなければデフォルトで構成されるハンドラーをオーバーライドします。getReturnValueHandlers
構成済みのハンドラー、またはafterPropertiesSet()
を介してまだ初期化されていない場合はnull
を返します。setModelAndViewResolvers
カスタムModelAndViewResolvers
を提供します。注意 : このメソッドは、下位互換性のためにのみ使用できます。ただし、
ModelAndViewResolver
をHandlerMethodReturnValueHandler
に書き換えることをお勧めします。HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
メソッドを実装できないため、2 つのインターフェース間のアダプターは使用できません。ModelAndViewResolver
は、他のすべての戻り値ハンドラーにチャンスが与えられた後、常に最後に呼び出されるように制限されています。HandlerMethodReturnValueHandler
は、戻り値の型とコントローラーメソッド情報へのより良いアクセスを提供し、他の戻り値ハンドラーと比較して自由にオーダーできます。getModelAndViewResolvers
設定されたModelAndViewResolvers
またはnull
を返します。setContentNegotiationManager
リクエストされたメディア型を判別するために使用するContentNegotiationManager
を設定します。設定されていない場合、デフォルトのコンストラクターが使用されます。setMessageConverters
引数リゾルバーで使用するコンバーターを提供し、リクエストおよびレスポンスの本文の読み取りおよび / または書き込みをサポートする値ハンドラーを返します。getMessageConverters
構成されたメッセージ本文コンバーターを返します。setRequestBodyAdvice
1 つ以上のRequestBodyAdvice
インスタンスを追加して、リクエストが読み取られ、@RequestBody
およびHttpEntity
メソッド引数に変換される前にインターセプトします。setResponseBodyAdvice
@ResponseBody
またはResponseEntity
の戻り値がレスポンス本文に書き込まれる前に、1 つ以上のResponseBodyAdvice
インスタンスを追加してレスポンスをインターセプトします。setWebBindingInitializer
WebBindingInitializer に「グローバル」初期化を提供して、すべての DataBinder インスタンスに適用します。getWebBindingInitializer
設定された WebBindingInitializer を返すか、存在しない場合はnull
を返します。setErrorResponseInterceptors
RFC 9457ProblemDetail
エラーレスポンスをレンダリングするときに適用するErrorResponse.Interceptor
のリストを構成します。- パラメーター:
interceptors
- 使用する迎撃機- 導入:
- 6.2
getErrorResponseInterceptors
- 導入:
- 6.2
setTaskExecutor
コントローラーメソッドがCallable
SE を返すときに使用するデフォルトのAsyncTaskExecutor
を設定します。コントローラーのメソッドは、WebAsyncTask
を返すことにより、リクエストごとにこのデフォルトをオーバーライドできます。アプリケーションにそのような戻り値の型を持つコントローラーがある場合は、デフォルトで使用されるコントローラーは負荷がかかる運用には適していないため、
AsyncTaskExecutor
を構成してください。setAsyncRequestTimeout
public void setAsyncRequestTimeout(long timeout) 並行処理がタイムアウトするまでの時間をミリ秒単位で指定します。Servlet 3 では、タイムアウトはメインのリクエスト処理スレッドが終了した後に始まり、同時に生成された結果をさらに処理するためにリクエストが再度ディスパッチされると終了します。この値が設定されていない場合、基礎となる実装のデフォルトのタイムアウトが使用されます。
- パラメーター:
timeout
- ミリ秒単位のタイムアウト値
setCallableInterceptors
非同期リクエストで登録するようにCallableProcessingInterceptor
を構成します。- パラメーター:
interceptors
- 登録するインターセプター
setDeferredResultInterceptors
非同期リクエストで登録するようにDeferredResultProcessingInterceptor
を構成します。- パラメーター:
interceptors
- 登録するインターセプター
setReactiveAdapterRegistry
コントローラーメソッドからの戻り値としてサポートされるように、反応ライブラリ型のレジストリを構成します。- 導入:
- 5.0.5
getReactiveAdapterRegistry
アダプターの構成済みのリアクティブ型レジストリを返します。- 導入:
- 5.0
setIgnoreDefaultModelOnRedirect
@DeprecatedSE(since="6.0") public void setIgnoreDefaultModelOnRedirect(boolean ignoreDefaultModelOnRedirect) 使用すべきではありません。6.0 の時点で代替なし。削除すると、デフォルトのモデルはリダイレクト時に常に無視されますデフォルトでは、"default" モデルのコンテンツは、レンダリングシナリオとリダイレクトシナリオの両方で使用されます。または、コントローラーメソッドでRedirectAttributes
引数を宣言し、それを使用してリダイレクトの属性を提供することもできます。このフラグを
true
に設定すると、RedirectAttributes 引数が宣言されていなくても、"default" モデルがリダイレクトシナリオで使用されないことが保証されます。false
に設定すると、コントローラーメソッドが RedirectAttributes 引数を宣言しない場合、"default" モデルがリダイレクトで使用される可能性があります。6.0 の時点で、このプロパティはデフォルトで
true
に設定されています。- 関連事項:
setSessionAttributeStore
セッション属性を保存する戦略を指定します。デフォルトはDefaultSessionAttributeStore
で、モデルと同じ属性名でセッション属性を HttpSession に格納します。setCacheSecondsForSessionAttributeHandlers
public void setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers) @SessionAttributes
アノテーション付きハンドラーによって生成されたコンテンツを、指定された秒数の間キャッシュします。可能な値は次のとおりです。
- -1: キャッシュ関連のヘッダーの生成なし
- 0 (デフォルト値): 「キャッシュ制御: no-store」はキャッシュを防ぎます
- 1 以上: 「キャッシュ制御: max-age = seconds " はコンテンツのキャッシュを要求します。セッション属性を処理する場合はお勧めしません
すべての一般的なハンドラーに適用される (ただし、
@SessionAttributes
アノテーション付きハンドラーには適用されない) "cacheSeconds" プロパティとは対照的に、この設定は@SessionAttributes
ハンドラーにのみ適用されます。setSynchronizeOnSession
public void setSynchronizeOnSession(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。より具体的には、このフラグが "true" の場合、
handleRequestInternal
メソッドの実行は同期されます。利用可能な最適なセッションミューテックスが同期に使用されます。理想的には、これは HttpSessionMutexListener によって公開されるミューテックスです。セッションミューテックスは、セッションのライフタイム全体を通じて同じオブジェクトであることが保証されており、
SESSION_MUTEX_ATTRIBUTE
定数で定義されたキーで使用できます。これは、現在のセッションのロックを同期するための安全な参照として機能します。多くの場合、HttpSession 参照自体も、同じアクティブな論理セッションに対する常に同じオブジェクト参照になるため、安全なミューテックスです。ただし、これは異なるサーブレットコンテナー間では保証されません。唯一の 100% 安全な方法は、セッションミューテックスです。
setParameterNameDiscoverer
必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を設定します (たとえば、デフォルトの属性名の場合)。デフォルトは
DefaultParameterNameDiscoverer
です。setBeanFactory
ConfigurableBeanFactory
は、メソッド引数のデフォルト値の式を解決するために必要です。- 次で指定:
- インターフェース
BeanFactoryAware
のsetBeanFactory
- パラメーター:
beanFactory
- 所有 BeanFactory(非null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
getBeanFactory
この Bean インスタンスの所有ファクトリを返します。存在しない場合はnull
を返します。afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
supportsInternal
メソッドの引数と戻り値の型は何らかの方法で処理されるため、常にtrue
を返します。HandlerMethodArgumentResolver で認識されないメソッド引数は、それが単純型の場合はリクエストパラメーターとして解釈され、それ以外の場合はモデル属性として解釈されます。HandlerMethodReturnValueHandler で認識されない戻り値は、モデル属性として解釈されます。- 次で指定:
- クラス
AbstractHandlerMethodAdapter
のsupportsInternal
- パラメーター:
handlerMethod
- チェックするハンドラーメソッド- 戻り値:
- このアダプターが特定の方法を適応できるかどうか
handleInternal
@Nullable protected ModelAndView handleInternal(HttpServletRequestEE request, HttpServletResponseEE response, HandlerMethod handlerMethod) throws ExceptionSE クラスからコピーされた説明:AbstractHandlerMethodAdapter
指定されたハンドラーメソッドを使用して、リクエストを処理します。- 次で指定:
- クラス
AbstractHandlerMethodAdapter
のhandleInternal
- パラメーター:
request
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンスhandlerMethod
- 使用するハンドラーメソッド。このオブジェクトは以前にAbstractHandlerMethodAdapter.supportsInternal(HandlerMethod)
このインターフェースに渡されている必要があり、このインターフェースはtrue
を返したはずです。- 戻り値:
- ビューの名前と必要なモデルデータを含む ModelAndView オブジェクト、またはリクエストが直接処理された場合は
null
- 例外:
ExceptionSE
- エラーの場合
getLastModifiedInternal
この実装は常に -1 を返します。@RequestMapping
メソッドは lastModified 値を計算し、WebRequest.checkNotModified(long)
を呼び出し、その呼び出しの結果がtrue
の場合はnull
を返します。- 次で指定:
- クラス
AbstractHandlerMethodAdapter
のgetLastModifiedInternal
- パラメーター:
request
- 現在の HTTP リクエストhandlerMethod
- 使用するハンドラーメソッド- 戻り値:
- 指定されたハンドラーの lastModified 値
invokeHandlerMethod
@Nullable protected ModelAndView invokeHandlerMethod(HttpServletRequestEE request, HttpServletResponseEE response, HandlerMethod handlerMethod) throws ExceptionSE ビューリゾルバーが必要な場合は、ModelAndView
を準備するRequestMapping
ハンドラーメソッドを呼び出します。- 例外:
ExceptionSE
- 導入:
- 4.2
- 関連事項:
createInvocableHandlerMethod
指定されたHandlerMethod
定義からServletInvocableHandlerMethod
を作成します。- パラメーター:
handlerMethod
-HandlerMethod
定義- 戻り値:
- 対応する
ServletInvocableHandlerMethod
(またはそのカスタムサブクラス) - 導入:
- 4.2
createDataBinderFactory
protected InitBinderDataBinderFactory createDataBinderFactory(ListSE<InvocableHandlerMethod> binderMethods) throws ExceptionSE 新しい InitBinderDataBinderFactory インスタンスを作成するためのテンプレートメソッド。デフォルトの実装では、ServletRequestDataBinderFactory を作成します。これは、カスタム ServletRequestDataBinder サブクラスでオーバーライドできます。
- パラメーター:
binderMethods
-@InitBinder
メソッド- 戻り値:
- 使用する InitBinderDataBinderFactory インスタンス
- 例外:
ExceptionSE
- 無効な状態または引数の場合