クラス AbstractHandlerMapping
- 実装されているすべてのインターフェース:
Aware、BeanNameAware、ApplicationContextAware、Ordered、ServletContextAware、HandlerMapping
HandlerMapping 実装の抽象基本クラス。パスパターンによってマップされたハンドラーインターセプターを含む、順序付け、デフォルトハンドラー、ハンドラーインターセプターをサポートします。 メモ: この基本クラスは、HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE の公開をサポートしていません。この属性のサポートは、通常リクエスト URL マッピングに基づいた具象サブクラスまでです。
- 導入:
- 07.04.2003
- 作成者:
- Juergen Hoeller, Rossen Stoyanchev, Sam Brannen
- 関連事項:
フィールドのサマリー
フィールドクラス org.springframework.context.support.ApplicationObjectSupport から継承されたフィールド
loggerインターフェース org.springframework.web.servlet.HandlerMapping から継承されたフィールド
BEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, LOOKUP_PATH, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTEインターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected HandlerInterceptoradaptInterceptor(ObjectSE interceptor) 指定されたインターセプターオブジェクトをHandlerInterceptorに適合させます。protected voiddetectMappedInterceptors(ListSE<HandlerInterceptor> mappedInterceptors) 型MappedInterceptorの Bean を検出し、マッピングされたインターセプターのリストに追加します。protected voidextendInterceptors(ListSE<ObjectSE> interceptors) 構成されたインターセプター(setInterceptors(java.lang.Object...)を参照)を指定すると、サブクラスがオーバーライドして追加のインターセプターを登録できる拡張フック。protected StringSEfinal HandlerInterceptor[]HandlerInterceptorに適合したすべての構成済みインターセプターを返します。protected CorsConfigurationgetCorsConfiguration(ObjectSE handler, HttpServletRequestEE request) 指定されたハンドラーの CORS 構成を取得します。configuredCorsConfigurationSourceがある場合は、それを返します。protected HandlerExecutionChaingetCorsHandlerExecutionChain(HttpServletRequestEE request, HandlerExecutionChain chain, CorsConfiguration config) CORS リクエスト用にHandlerExecutionChainを更新し、チェーンの先頭にインターセプターを挿入して CORS チェックを実行し、プリフライトリクエストに対して no-op ハンドラーも使用します。設定されたCorsProcessorを返します。このハンドラーマッピングのデフォルトハンドラーを返します。ない場合はnullを返します。final HandlerExecutionChaingetHandler(HttpServletRequestEE request) 特定のリクエストのハンドラーを検索し、特定のハンドラーが見つからない場合はデフォルトのハンドラーにフォールバックします。protected HandlerExecutionChaingetHandlerExecutionChain(ObjectSE handler, HttpServletRequestEE request) 該当するインターセプターを含む、指定されたハンドラー用のHandlerExecutionChainを作成します。protected abstract ObjectSEgetHandlerInternal(HttpServletRequestEE request) 特定のリクエストのハンドラーを検索し、特定のリクエストが見つからない場合はnullを返します。protected final MappedInterceptor[]構成されたすべてのMappedInterceptorを配列として返します。intgetOrder()このオブジェクトの順序値を取得します。configuredPathMatcherを返します。configuredPathPatternParserまたはnullを返します。それ以外の場合は、代わりにAntPathMatcherとの文字列パターンマッチングが有効になっていることを示します。configuredUrlPathHelperを返します。protected booleanhasCorsConfigurationSource(ObjectSE handler) このハンドラーにCorsConfigurationSourceがある場合、trueを返します。protected voidインターセプターを初期化します。protected voidWebRequestInterceptorをHandlerInterceptorに適応させる指定されたインターセプターを初期化します。protected StringSEinitLookupPath(HttpServletRequestEE request) リクエストのマッピングに使用するパスを初期化します。voidsetAlwaysUseFullPath(boolean alwaysUseFullPath) 使用すべきではありません。voidsetBeanName(StringSE name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。voidsetCorsConfigurations(MapSE<StringSE, CorsConfiguration> corsConfigurations) 「グローバル」CORS 構成マッピングを設定します。void「グローバル」CORS 設定にCorsConfigurationSourceを設定します。voidsetCorsProcessor(CorsProcessor corsProcessor) 一致するCorsConfigurationをリクエストに適用するために使用するカスタムCorsProcessorを構成します。voidsetDefaultHandler(ObjectSE defaultHandler) このハンドラーマッピングのデフォルトハンドラーを設定します。voidsetInterceptors(ObjectSE... interceptors) このハンドラーマッピングによってマップされたすべてのハンドラーに適用するインターセプターを設定します。voidsetOrder(int order) この HandlerMapping Bean の順序値を指定します。voidsetPathMatcher(PathMatcher pathMatcher) 使用する PathMatcher を構成します。voidsetPatternParser(PathPatternParser patternParser) URL パスマッチングのためにpatternsを解析するようにPathPatternParserを設定します。voidsetRemoveSemicolonContent(boolean removeSemicolonContent) 使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)の使用を推奨voidsetUrlDecode(boolean urlDecode) 使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)の使用を推奨voidsetUrlPathHelper(UrlPathHelper urlPathHelper) ルックアップパスの解決に使用するように UrlPathHelper を構成します。booleanクラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextクラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContext
フィールドの詳細
mappingsLogger
リクエストマッピング専用の「非表示」ロガー。
コンストラクターの詳細
AbstractHandlerMapping
public AbstractHandlerMapping()
メソッドの詳細
setDefaultHandler
このハンドラーマッピングのデフォルトハンドラーを設定します。特定のマッピングが見つからなかった場合、このハンドラーが返されます。デフォルトは
nullで、デフォルトのハンドラーがないことを示します。getDefaultHandler
このハンドラーマッピングのデフォルトハンドラーを返します。ない場合はnullを返します。setPatternParser
URL パスマッチングのためにpatternsを解析するようにPathPatternParserを設定します。解析されたパターンは、AntPathMatcherによる文字列パスマッチングのよりモダンで効率的な代替手段を提供します。注意 : このプロパティは、以下のプロパティと相互に排他的です。これらはすべて、解析されたパターンには必要なく、
PathPatternParserが使用可能な場合は無視されます。setAlwaysUseFullPath(boolean)-- 解析されたパターンは常に完全なパスを使用し、サーブレットがパスプレフィックスによってマップされている場合にのみ servletPath を考慮します。setRemoveSemicolonContent(boolean)-- 解析されたパターンは、パスマッチングの目的でセミコロンの内容を常に無視しますが、パスパラメーターは@MatrixVariableを介してコントローラーで使用できます。setUrlDecode(boolean)-- 解析されたパターンは、一度に 1 つのデコードされたパスセグメントに一致するため、完全なパスをデコードする必要はありません。setUrlPathHelper(org.springframework.web.util.UrlPathHelper)-- 解析されたパターンの場合、リクエストパスはDispatcherServletまたはServletRequestPathUtilsを使用してServletRequestPathFilterで一度解析され、リクエスト属性にキャッシュされます。setPathMatcher(org.springframework.util.PathMatcher)-- 解析されたパターンは、パスマッチングのロジックをカプセル化し、PathMatcherを必要とします。
デフォルトでは、6.0 の時点で、これはデフォルト設定の
PathPatternParserインスタンスに設定されているため、解析済みパターンの使用が有効になっています。これをnullに設定すると、代わりにAntPathMatcherによる文字列パスマッチングに切り替わります。- パラメーター:
patternParser- 使用するパーサー- 導入:
- 5.3
getPatternParser
configuredPathPatternParserまたはnullを返します。それ以外の場合は、代わりにAntPathMatcherとの文字列パターンマッチングが有効になっていることを示します。- 導入:
- 5.3
setAlwaysUseFullPath
使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)の使用を推奨構成されたUrlPathHelperの同じプロパティへのショートカット。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)が設定されている場合は無視されます。setUrlDecode
使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)の使用を推奨基になるUrlPathHelperの同じプロパティへのショートカット。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)が設定されている場合は無視されます。setRemoveSemicolonContent
使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)の使用を推奨基になるUrlPathHelperの同じプロパティへのショートカット。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)が設定されている場合は無視されます。setUrlPathHelper
ルックアップパスの解決に使用するように UrlPathHelper を構成します。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)が設定されている場合は無視されます。getUrlPathHelper
configuredUrlPathHelperを返します。setPathMatcher
使用する PathMatcher を構成します。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)が設定されている場合は無視されます。デフォルトでは、これは
AntPathMatcherです。- 関連事項:
getPathMatcher
configuredPathMatcherを返します。setInterceptors
このハンドラーマッピングによってマップされたすべてのハンドラーに適用するインターセプターを設定します。サポートされているインターセプター型は、
HandlerInterceptor、WebRequestInterceptor、MappedInterceptorです。マップされたインターセプターは、パスパターンに一致するリクエスト URL にのみ適用されます。マップされたインターセプター Bean も、初期化中に型ごとに検出されます。- パラメーター:
interceptors- ハンドラーインターセプターの配列- 関連事項:
getAdaptedInterceptors
HandlerInterceptorに適合したすべての構成済みインターセプターを返します。- 戻り値:
- 構成されたインターセプターの配列、または構成されていない場合は
null。このメソッドは、あまりにも早く呼び出された場合、またはより具体的にはApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)の前に呼び出された場合にもnullを返します。
getMappedInterceptors
構成されたすべてのMappedInterceptorを配列として返します。- 戻り値:
MappedInterceptorの配列。ない場合はnull
setCorsConfigurations
「グローバル」CORS 構成マッピングを設定します。最初に一致する URL パターンは、使用するCorsConfigurationを決定し、次に、選択されたハンドラーのCorsConfigurationでさらにcombinedになります。これは
setCorsConfigurationSource(CorsConfigurationSource)と相互に排他的です。- 導入:
- 4.2
- 関連事項:
setCorsConfigurationSource
「グローバル」CORS 設定にCorsConfigurationSourceを設定します。ソースによって決定されたCorsConfigurationは、選択されたハンドラーのCorsConfigurationを持つcombinedです。これは
setCorsConfigurations(Map)と相互に排他的です。- 導入:
- 5.1
- 関連事項:
getCorsConfigurationSource
configuredCorsConfigurationSourceがある場合は、それを返します。- 導入:
- 5.3
setCorsProcessor
一致するCorsConfigurationをリクエストに適用するために使用するカスタムCorsProcessorを構成します。デフォルトでは、
DefaultCorsProcessorが使用されます。- 導入:
- 4.2
getCorsProcessor
設定されたCorsProcessorを返します。setOrder
public void setOrder(int order) この HandlerMapping Bean の順序値を指定します。デフォルト値は
Ordered.LOWEST_PRECEDENCEで、順序なしを意味します。- 関連事項:
getOrder
public int getOrder()インターフェースからコピーされた説明:Orderedこのオブジェクトの順序値を取得します。値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット
load-on-startupの値に多少似ています)。同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
setBeanName
インターフェースからコピーされた説明:BeanNameAwareこの Bean を作成した Bean ファクトリで Bean の名前を設定します。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init メソッドなどの init コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanNameAwareのsetBeanName - パラメーター:
name- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
formatMappingName
initApplicationContext
インターセプターを初期化します。- オーバーライド:
- クラス
ApplicationObjectSupportのinitApplicationContext - 例外:
ApplicationContextException- 初期化エラーの場合BeansException- ApplicationContext メソッドによってスローされた場合- 関連事項:
extendInterceptors
構成されたインターセプター(setInterceptors(java.lang.Object...)を参照)を指定すると、サブクラスがオーバーライドして追加のインターセプターを登録できる拡張フック。initInterceptors()が指定されたインターセプターをHandlerInterceptorインスタンスに適応させる前に呼び出されます。デフォルトの実装は空です。
- パラメーター:
interceptors- 構成されたインターセプターリスト(非null)。既存のインターセプターの前後にインターセプターを追加できます
detectMappedInterceptors
型MappedInterceptorの Bean を検出し、マッピングされたインターセプターのリストに追加します。これは、
setInterceptors(java.lang.Object...)を介して提供されたすべてのMappedInterceptorに加えて呼び出され、デフォルトで、現在のコンテキストとその祖先から型MappedInterceptorのすべての Bean を追加します。サブクラスはこのポリシーをオーバーライドおよび調整できます。- パラメーター:
mappedInterceptors- 追加する空のリスト
initInterceptors
protected void initInterceptors()WebRequestInterceptorをHandlerInterceptorに適応させる指定されたインターセプターを初期化します。adaptInterceptor
指定されたインターセプターオブジェクトをHandlerInterceptorに適合させます。デフォルトでは、サポートされるインターセプター型は
HandlerInterceptorおよびWebRequestInterceptorです。指定された各WebRequestInterceptorはWebRequestHandlerInterceptorAdapterでラップされます。- パラメーター:
interceptor- インターセプター- 戻り値:
- インターセプターダウンキャストまたは HandlerInterceptor に適合
- 関連事項:
usesPathPatterns
public boolean usesPathPatterns()- 次で指定:
- インターフェース
HandlerMappingのusesPathPatterns
getHandler
@Nullable public final HandlerExecutionChain getHandler(HttpServletRequestEE request) throws ExceptionSE 特定のリクエストのハンドラーを検索し、特定のハンドラーが見つからない場合はデフォルトのハンドラーにフォールバックします。- 次で指定:
- インターフェース
HandlerMappingのgetHandler - パラメーター:
request- 現在の HTTP リクエスト- 戻り値:
- 対応するハンドラーインスタンス、またはデフォルトハンドラー
- 例外:
ExceptionSE- 内部エラーがある場合- 関連事項:
getHandlerInternal
@Nullable protected abstract ObjectSE getHandlerInternal(HttpServletRequestEE request) throws ExceptionSE 特定のリクエストのハンドラーを検索し、特定のリクエストが見つからない場合はnullを返します。このメソッドはgetHandler(jakarta.servlet.http.HttpServletRequest)によって呼び出されます。nullの戻り値は、デフォルトのハンドラー(設定されている場合)につながります。CORS プリフライトリクエストでは、このメソッドはプリフライトリクエストではなく、URL パス、"Access-Control-Request-Method" ヘッダーからの HTTP メソッド、ヘッダーに基づいて予想される実際のリクエストに対して一致を返す必要があります "Access-Control-Request-Headers" ヘッダーから、
getCorsConfiguration(Object, HttpServletRequest)を介して CORS 設定を取得できるようにします。メモ: このメソッドは、ハンドラーオブジェクトと動的に決定されたインターセプターを組み合わせて、事前に構築された
HandlerExecutionChainを返すこともあります。静的に指定されたインターセプターは、そのような既存のチェーンにマージされます。- パラメーター:
request- 現在の HTTP リクエスト- 戻り値:
- 対応するハンドラーインスタンス。見つからない場合は
null - 例外:
ExceptionSE- 内部エラーがある場合
initLookupPath
リクエストのマッピングに使用するパスを初期化します。解析されたパターンが
enabledの場合、解析されたRequestPathは、DispatcherServletまたはServletRequestPathFilterによって外部的にparsedであると予想されます。それ以外の場合、
PathMatcherを介した文字列パターンマッチングの場合、このメソッドによるパスはresolvedです。- 導入:
- 5.3
getHandlerExecutionChain
protected HandlerExecutionChain getHandlerExecutionChain(ObjectSE handler, HttpServletRequestEE request) 該当するインターセプターを含む、指定されたハンドラー用のHandlerExecutionChainを作成します。デフォルトの実装では、指定されたハンドラー、ハンドラーマッピングの共通インターセプター、現在のリクエスト URL に一致する
MappedInterceptorsを使用して、標準のHandlerExecutionChainを構築します。インターセプターは、登録された順に追加されます。サブクラスは、インターセプターのリストを継承 / 再配置するためにこれをオーバーライドできます。注意 : 渡されたハンドラーオブジェクトは、生のハンドラーまたは事前に作成された
HandlerExecutionChainの場合があります。このメソッドは、新しいHandlerExecutionChainの構築または既存のチェーンの拡張のいずれかで、これら 2 つのケースを明示的に処理する必要があります。カスタムサブクラスにインターセプターを単純に追加するには、
super.getHandlerExecutionChain(handler, request)を呼び出し、返されたチェーンオブジェクトでHandlerExecutionChain.addInterceptor(org.springframework.web.servlet.HandlerInterceptor)を呼び出すことを検討してください。- パラメーター:
handler- 解決されたハンドラーインスタンス (非null)request- 現在の HTTP リクエスト- 戻り値:
- HandlerExecutionChain (非
null) - 関連事項:
hasCorsConfigurationSource
このハンドラーにCorsConfigurationSourceがある場合、trueを返します。- 導入:
- 5.2
getCorsConfiguration
@Nullable protected CorsConfiguration getCorsConfiguration(ObjectSE handler, HttpServletRequestEE request) 指定されたハンドラーの CORS 構成を取得します。- パラメーター:
handler- チェックするハンドラー(非null)。request- 現在のリクエスト。- 戻り値:
- ハンドラーの CORS 構成、ない場合は
null - 導入:
- 4.2
getCorsHandlerExecutionChain
protected HandlerExecutionChain getCorsHandlerExecutionChain(HttpServletRequestEE request, HandlerExecutionChain chain, @Nullable CorsConfiguration config) CORS リクエスト用にHandlerExecutionChainを更新し、チェーンの先頭にインターセプターを挿入して CORS チェックを実行し、プリフライトリクエストに対して no-op ハンドラーも使用します。- パラメーター:
request- 現在のリクエストchain- 更新するチェーンconfig- ハンドラーに適用される CORS 構成- 導入:
- 4.2
setUrlPathHelper(UrlPathHelper)の使用を推奨