クラス RequestMappingHandlerAdapter
- 実装されているすべてのインターフェース:
Aware, BeanFactoryAware, InitializingBean, ApplicationContextAware, Ordered, ServletContextAware, HandlerAdapter
@RequestMapping アノテーション付き HandlerMethods をサポートする AbstractHandlerMethodAdapter の拡張。setCustomArgumentResolvers(List) および setCustomReturnValueHandlers(List) を介してカスタム引数および戻り値の型のサポートを追加できます。あるいは、すべての引数および戻り値の型を再構成するには、setArgumentResolvers(List) および setReturnValueHandlers(List) を使用します。
- 導入:
- 3.1
- 作成者:
- Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
- 関連事項:
フィールドのサマリー
フィールド修飾子と型フィールド説明static final ReflectionUtils.MethodFilter@InitBinderメソッドと一致する MethodFilter。static final ReflectionUtils.MethodFilter@ModelAttributeメソッドと一致する MethodFilter。クラス WebContentGenerator から継承されたフィールド
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POSTクラス ApplicationObjectSupport から継承されたフィールド
loggerインターフェース Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクターの概要
コンストラクター方法の概要
修飾子と型メソッド説明voidprotected InitBinderDataBinderFactorycreateDataBinderFactory(ListSE<InvocableHandlerMethod> binderMethods) 新しい InitBinderDataBinderFactory インスタンスを作成するためのテンプレートメソッド。protected ServletInvocableHandlerMethodcreateInvocableHandlerMethod(HandlerMethod handlerMethod) 指定されたHandlerMethod定義からServletInvocableHandlerMethodを作成します。設定済みの引数リゾルバーを返します。afterPropertiesSet()を介してまだ初期化されていない場合は、nullを返します。protected @Nullable ConfigurableBeanFactoryこの Bean インスタンスの所有ファクトリを返します。存在しない場合はnullを返します。カスタム引数リゾルバー、またはnullを返します。カスタム戻り値ハンドラー、またはnullを返します。構成されたメッセージ本文コンバーターを返します。設定されたModelAndViewResolversまたはnullを返します。アダプターの構成済みのリアクティブ型レジストリを返します。構成済みのハンドラー、またはafterPropertiesSet()を介してまだ初期化されていない場合はnullを返します。設定された WebBindingInitializer を返すか、存在しない場合はnullを返します。protected @Nullable ModelAndViewhandleInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, HandlerMethod handlerMethod) 指定されたハンドラーメソッドを使用して、リクエストを処理します。protected @Nullable ModelAndViewinvokeHandlerMethod(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, HandlerMethod handlerMethod) ビューリゾルバーが必要な場合は、ModelAndViewを準備するRequestMappingハンドラーメソッドを呼び出します。voidsetArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers) サポートされている引数型の完全なリストを構成して、デフォルトでは構成されないリゾルバーをオーバーライドします。voidsetAsyncRequestTimeout(long timeout) 並行処理がタイムアウトするまでの時間をミリ秒単位で指定します。voidsetBeanFactory(BeanFactory beanFactory) ConfigurableBeanFactoryは、メソッド引数のデフォルト値の式を解決するために必要です。voidsetCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers) @SessionAttributesアノテーション付きハンドラーによって生成されたコンテンツを、指定された秒数の間キャッシュします。voidsetCallableInterceptors(ListSE<CallableProcessingInterceptor> interceptors) 非同期リクエストで登録するようにCallableProcessingInterceptorを構成します。voidsetContentNegotiationManager(ContentNegotiationManager contentNegotiationManager) リクエストされたメディア型を判別するために使用するContentNegotiationManagerを設定します。voidsetCustomArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers) カスタム引数型のリゾルバーを提供します。voidsetCustomReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) カスタム戻り値型のハンドラーを提供します。void非同期リクエストで登録するようにDeferredResultProcessingInterceptorを構成します。voidsetErrorResponseInterceptors(ListSE<ErrorResponse.Interceptor> interceptors) RFC 9457ProblemDetailエラーレスポンスをレンダリングするときに適用するErrorResponse.Interceptorのリストを構成します。voidsetInitBinderArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers) @InitBinderメソッドでサポートされる引数型を構成します。voidsetMessageConverters(ListSE<HttpMessageConverter<?>> messageConverters) 引数リゾルバーで使用するコンバーターを提供し、リクエストおよびレスポンスの本文の読み取りおよび / または書き込みをサポートする値ハンドラーを返します。voidsetModelAndViewResolvers(@Nullable ListSE<ModelAndViewResolver> modelAndViewResolvers) カスタムModelAndViewResolversを提供します。voidsetParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer) 必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を設定します (たとえば、デフォルトの属性名の場合)。voidsetReactiveAdapterRegistry(ReactiveAdapterRegistry reactiveAdapterRegistry) コントローラーメソッドからの戻り値としてサポートされるように、反応ライブラリ型のレジストリを構成します。voidsetRequestBodyAdvice(@Nullable ListSE<RequestBodyAdvice> requestBodyAdvice) 1 つ以上のRequestBodyAdviceインスタンスを追加して、リクエストが読み取られ、@RequestBodyおよびHttpEntityメソッド引数に変換される前にインターセプトします。voidsetResponseBodyAdvice(@Nullable ListSE<ResponseBodyAdvice<?>> responseBodyAdvice) @ResponseBodyまたはResponseEntityの戻り値がレスポンス本文に書き込まれる前に、1 つ以上のResponseBodyAdviceインスタンスを追加してレスポンスをインターセプトします。voidsetReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) サポートされている戻り値の型の完全なリストを構成し、そうでなければデフォルトで構成されるハンドラーをオーバーライドします。voidsetSessionAttributeStore(SessionAttributeStore sessionAttributeStore) セッション属性を保存する戦略を指定します。voidsetSynchronizeOnSession(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。voidsetTaskExecutor(AsyncTaskExecutor taskExecutor) コントローラーメソッドがCallableSE を返すときに使用するデフォルトのAsyncTaskExecutorを設定します。voidsetWebBindingInitializer(@Nullable WebBindingInitializer webBindingInitializer) WebBindingInitializer に「グローバル」初期化を提供して、すべての DataBinder インスタンスに適用します。protected booleansupportsInternal(HandlerMethod handlerMethod) メソッドの引数と戻り値の型は何らかの方法で処理されるため、常にtrueを返します。クラス AbstractHandlerMethodAdapter から継承されたメソッド
getOrder, handle, setOrder, supportsクラス WebContentGenerator から継承されたメソッド
applyCacheControl, applyCacheSeconds, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isRequireSession, prepareResponse, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setVaryByRequestHeadersクラス WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
フィールドの詳細
INIT_BINDER_METHODS
@InitBinderメソッドと一致する MethodFilter。MODEL_ATTRIBUTE_METHODS
@ModelAttributeメソッドと一致する MethodFilter。
コンストラクターの詳細
RequestMappingHandlerAdapter
public RequestMappingHandlerAdapter()
メソッドの詳細
setCustomArgumentResolvers
public void setCustomArgumentResolvers(@Nullable ListSE<HandlerMethodArgumentResolver> argumentResolvers) カスタム引数型のリゾルバーを提供します。カスタムリゾルバーは、組み込みリゾルバーの後にオーダーされます。引数解決の組み込みサポートをオーバーライドするには、代わりにsetArgumentResolvers(List)を使用します。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(List)を使用します。getCustomReturnValueHandlers
カスタム戻り値ハンドラー、またはnullを返します。setReturnValueHandlers
public void setReturnValueHandlers(@Nullable ListSE<HandlerMethodReturnValueHandler> returnValueHandlers) サポートされている戻り値の型の完全なリストを構成し、そうでなければデフォルトで構成されるハンドラーをオーバーライドします。getReturnValueHandlers
構成済みのハンドラー、またはafterPropertiesSet()を介してまだ初期化されていない場合はnullを返します。setModelAndViewResolvers
カスタムModelAndViewResolversを提供します。注意 : このメソッドは、下位互換性のためにのみ使用できます。ただし、
ModelAndViewResolverをHandlerMethodReturnValueHandlerに書き換えることをお勧めします。HandlerMethodReturnValueHandler.supportsReturnType(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
コントローラーメソッドがCallableSE を返すときに使用するデフォルトのAsyncTaskExecutorを設定します。コントローラーのメソッドは、WebAsyncTaskを返すことにより、リクエストごとにこのデフォルトをオーバーライドできます。アプリケーションにそのような戻り値の型を持つコントローラーがある場合は、デフォルトで使用されるコントローラーは負荷がかかる運用には適していないため、
AsyncTaskExecutorを構成してください。setAsyncRequestTimeout
public void setAsyncRequestTimeout(long timeout) 並行処理がタイムアウトするまでの時間をミリ秒単位で指定します。Servlet 3 では、タイムアウトはメインのリクエスト処理スレッドが終了した後に始まり、同時に生成された結果をさらに処理するためにリクエストが再度ディスパッチされると終了します。この値が設定されていない場合、基礎となる実装のデフォルトのタイムアウトが使用されます。
- パラメーター:
timeout- ミリ秒単位のタイムアウト値
setCallableInterceptors
非同期リクエストで登録するようにCallableProcessingInterceptorを構成します。- パラメーター:
interceptors- 登録するインターセプター
setDeferredResultInterceptors
非同期リクエストで登録するようにDeferredResultProcessingInterceptorを構成します。- パラメーター:
interceptors- 登録するインターセプター
setReactiveAdapterRegistry
コントローラーメソッドからの戻り値としてサポートされるように、反応ライブラリ型のレジストリを構成します。- 導入:
- 5.0.5
getReactiveAdapterRegistry
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
protected @Nullable ModelAndView handleInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, HandlerMethod handlerMethod) throws ExceptionSE クラスからコピーされた説明:AbstractHandlerMethodAdapter指定されたハンドラーメソッドを使用して、リクエストを処理します。- 次で指定:
- クラス
AbstractHandlerMethodAdapterのhandleInternal - パラメーター:
request- 現在の HTTP リクエストresponse- 現在の HTTP レスポンスhandlerMethod- 使用するハンドラーメソッド。このオブジェクトは以前にAbstractHandlerMethodAdapter.supportsInternal(HandlerMethod)このインターフェースに渡されている必要があり、このインターフェースはtrueを返したはずです。- 戻り値:
- ビューの名前と必要なモデルデータを含む ModelAndView オブジェクト、またはリクエストが直接処理された場合は
null - 例外:
ExceptionSE- エラーの場合
invokeHandlerMethod
protected @Nullable ModelAndView invokeHandlerMethod(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse 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- 無効な状態または引数の場合