クラス AbstractUrlHandlerMapping
- 実装されているすべてのインターフェース:
Aware, BeanNameAware, ApplicationContextAware, Ordered, ServletContextAware, MatchableHandlerMapping, HandlerMapping
HandlerMapping 実装の抽象基本クラス。"/test/*","/test/**" などのリテラル一致とパターン一致をサポートします。パターン構文の詳細については、解析されたパターンが enabled の場合は PathPattern を参照するか、それ以外の場合は AntPathMatcher を参照してください。構文はほぼ同じですが、PathPattern 構文は Web アプリケーション向けに調整されており、その実装はより効率的です。
現在のリクエストパスに最も正確に一致するものを見つけるために、すべてのパスパターンがチェックされます。ここで、「最も正確な」は、現在のリクエストパスに一致する最長のパスパターンです。
- 導入:
- 16.04.2003
- 作成者:
- Juergen Hoeller, Arjen Poutsma
フィールドのサマリー
クラス AbstractHandlerMapping から継承されたフィールド
mappingsLoggerクラス ApplicationObjectSupport から継承されたフィールド
loggerインターフェース HandlerMapping から継承されたフィールド
API_VERSION_ATTRIBUTE, 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インターフェース Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected ObjectSEbuildPathExposingHandler(ObjectSE rawHandler, StringSE bestMatchingPattern, StringSE pathWithinMapping, @Nullable MapSE<StringSE, StringSE> uriTemplateVariables) ハンドラーを実行する前に、実際のハンドラーHandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTEとHandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTEを公開して、指定された生のハンドラーのハンドラーオブジェクトを作成します。protected voidexposePathWithinMapping(StringSE bestMatchingPattern, StringSE pathWithinMapping, jakarta.servlet.http.HttpServletRequest request) 現在のマッピング内のパスをリクエスト属性として公開します。protected voidexposeUriTemplateVariables(MapSE<StringSE, StringSE> uriTemplateVariables, jakarta.servlet.http.HttpServletRequest request) URI テンプレート変数をリクエスト属性として公開します。getHandlerInternal(jakarta.servlet.http.HttpServletRequest request) 指定されたリクエストの URL パスのハンドラーを検索します。登録されたパスまたはパターンをキーとして、ハンドラーオブジェクト(または lazy-init ハンドラーの場合はハンドラー Bean 名)を値として、ハンドラーマッピングを読み取り専用マップとして返します。final MapSE<PathPattern, ObjectSE> getHandlerMap()と同じですが、解析されたパターンがenabledの場合に入力されます。それ以外の場合は空です。このハンドラーマッピングのルートハンドラーを返します(「/"), またはnullがない場合は登録済み)。lookupHandler(StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) 指定された URL パスのハンドラーインスタンスを検索します。lookupHandler(RequestPath path, StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) 指定された URL パスのハンドラーインスタンスを検索します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。voidregisterHandler(StringSE[] urlPaths, StringSE beanName) 指定された URL パスに指定されたハンドラーを登録します。voidregisterHandler(StringSE urlPath, ObjectSE handler) 指定された URL パスに指定されたハンドラーを登録します。voidsetLazyInitHandlers(boolean lazyInitHandlers) ハンドラーを遅延初期化するかどうかを設定します。voidsetPatternParser(@Nullable PathPatternParser patternParser) URL パスマッチングのためにpatternsを解析するようにPathPatternParserを設定します。voidsetRootHandler(@Nullable ObjectSE rootHandler) このハンドラーマッピングのルートハンドラー、つまり、ルートパス("/")に登録されるハンドラーを設定します。protected booleanこのハンドラーマッピングが型レベルのマッピングをサポートするかどうかを示します。voidunregisterHandler(StringSE urlPath) 指定された URL パスに登録されたハンドラーのマッピングを削除します。protected voidvalidateHandler(ObjectSE handler, jakarta.servlet.http.HttpServletRequest request) 現在のリクエストに対して指定されたハンドラーを検証します。クラス AbstractHandlerMapping から継承されたメソッド
adaptInterceptor, detectMappedInterceptors, extendInterceptors, formatMappingName, getAdaptedInterceptors, getApiVersionStrategy, getCorsConfiguration, getCorsConfigurationSource, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getPatternParser, getUrlPathHelper, hasCorsConfigurationSource, initApplicationContext, initInterceptors, initLookupPath, setAlwaysUseFullPath, setApiVersionStrategy, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper, usesPathPatternsクラス WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextクラス ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContextクラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース HandlerMapping から継承されたメソッド
getHandler, usesPathPatternsインターフェース MatchableHandlerMapping から継承されたメソッド
getPatternParser
コンストラクターの詳細
AbstractUrlHandlerMapping
public AbstractUrlHandlerMapping()
メソッドの詳細
setPatternParser
クラスからコピーされた説明:AbstractHandlerMappingURL パスマッチングのためにpatternsを解析するようにPathPatternParserを設定します。解析されたパターンは、AntPathMatcherによる文字列パスマッチングのよりモダンで効率的な代替手段を提供します。注意 : このプロパティは、以下のプロパティと相互に排他的です。これらはすべて、解析されたパターンには必要なく、
PathPatternParserが使用可能な場合は無視されます。AbstractHandlerMapping.setAlwaysUseFullPath(boolean)-- 解析されたパターンは常に完全なパスを使用し、サーブレットがパスプレフィックスによってマップされている場合にのみ servletPath を考慮します。AbstractHandlerMapping.setRemoveSemicolonContent(boolean)-- 解析されたパターンは、パスマッチングの目的でセミコロンの内容を常に無視しますが、パスパラメーターは@MatrixVariableを介してコントローラーで使用できます。AbstractHandlerMapping.setUrlDecode(boolean)-- 解析されたパターンは、一度に 1 つのデコードされたパスセグメントに一致するため、完全なパスをデコードする必要はありません。AbstractHandlerMapping.setUrlPathHelper(UrlPathHelper)-- 解析されたパターンの場合、リクエストパスはDispatcherServletまたはServletRequestPathUtilsを使用してServletRequestPathFilterで一度解析され、リクエスト属性にキャッシュされます。AbstractHandlerMapping.setPathMatcher(PathMatcher)-- 解析されたパターンは、パスマッチングのロジックをカプセル化し、PathMatcherを必要とします。
デフォルトでは、6.0 の時点で、これはデフォルト設定の
PathPatternParserインスタンスに設定されているため、解析済みパターンの使用が有効になっています。これをnullに設定すると、代わりにAntPathMatcherによる文字列パスマッチングに切り替わります。- オーバーライド:
- クラス
AbstractHandlerMappingのsetPatternParser - パラメーター:
patternParser- 使用するパーサー
setRootHandler
getRootHandler
setLazyInitHandlers
public void setLazyInitHandlers(boolean lazyInitHandlers) ハンドラーを遅延初期化するかどうかを設定します。プロトタイプは常に遅延初期化されるため、シングルトンハンドラーにのみ適用できます。積極的な初期化により、コントローラーオブジェクトを直接参照することで効率が向上するため、デフォルトは "false" です。コントローラーの遅延初期化を許可する場合は、コントローラーを "lazy-init" にして、このフラグを true に設定します。これらを "lazy-init" にするだけでは機能しません。この場合、ハンドラーマッピングからの参照を介して初期化されるためです。
registerHandler
public void registerHandler(StringSE[] urlPaths, StringSE beanName) throws BeansException, IllegalStateExceptionSE 指定された URL パスに指定されたハンドラーを登録します。- パラメーター:
urlPaths- Bean がマッピングされる URLbeanName- ハンドラー Bean の名前- 例外:
BeansException- ハンドラーを登録できなかった場合IllegalStateExceptionSE- 競合するハンドラーが登録されている場合- 導入:
- 6.2
registerHandler
public void registerHandler(StringSE urlPath, ObjectSE handler) throws BeansException, IllegalStateExceptionSE 指定された URL パスに指定されたハンドラーを登録します。- パラメーター:
urlPath- Bean がマッピングされる URLhandler- ハンドラーインスタンスまたはハンドラー Bean name String (Bean 名は、対応するハンドラー Bean に自動的に解決されます)- 例外:
BeansException- ハンドラーを登録できなかった場合IllegalStateExceptionSE- 競合するハンドラーが登録されている場合- 導入:
- 6.2
unregisterHandler
指定された URL パスに登録されたハンドラーのマッピングを削除します。- パラメーター:
urlPath- 削除するマッピング- 導入:
- 6.2
getHandlerInternal
protected @Nullable ObjectSE getHandlerInternal(jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 指定されたリクエストの URL パスのハンドラーを検索します。- 次で指定:
- クラス
AbstractHandlerMappingのgetHandlerInternal - パラメーター:
request- 現在の HTTP リクエスト- 戻り値:
- ハンドラーインスタンス。見つからない場合は
null - 例外:
ExceptionSE- 内部エラーがある場合
lookupHandler
protected @Nullable ObjectSE lookupHandler(RequestPath path, StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 指定された URL パスのハンドラーインスタンスを検索します。このメソッドは、解析されたPathPatternがenabledである場合に使用されます。- パラメーター:
path- 解析された RequestPathlookupPath- 直撃をチェックするための文字列 lookupPathrequest- 現在の HTTP リクエスト- 戻り値:
- 一致するハンドラー、または見つからない場合は
null - 例外:
ExceptionSE- 導入:
- 5.3
lookupHandler
protected @Nullable ObjectSE lookupHandler(StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 指定された URL パスのハンドラーインスタンスを検索します。このメソッドは、PathMatcherとの文字列パターンマッチングが使用されている場合に使用されます。- パラメーター:
lookupPath- パターンを照合するパスrequest- 現在の HTTP リクエスト- 戻り値:
- 一致するハンドラー、または見つからない場合は
null - 例外:
ExceptionSE- 関連事項:
validateHandler
protected void validateHandler(ObjectSE handler, jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 現在のリクエストに対して指定されたハンドラーを検証します。デフォルトの実装は空です。たとえば、URL マッピングで表される特定の前提条件を強制するために、サブクラスでオーバーライドできます。
- パラメーター:
handler- 検証するハンドラーオブジェクトrequest- 現在の HTTP リクエスト- 例外:
ExceptionSE- 検証に失敗した場合
buildPathExposingHandler
protected ObjectSE buildPathExposingHandler(ObjectSE rawHandler, StringSE bestMatchingPattern, StringSE pathWithinMapping, @Nullable MapSE<StringSE, StringSE> uriTemplateVariables) ハンドラーを実行する前に、実際のハンドラーHandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTEとHandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTEを公開して、指定された生のハンドラーのハンドラーオブジェクトを作成します。デフォルトの実装では、パス属性と URI テンプレート変数を公開する特別なインターセプターを使用して
HandlerExecutionChainを構築します- パラメーター:
rawHandler- 公開する生のハンドラーpathWithinMapping- ハンドラーを実行する前に公開するパスuriTemplateVariables- URI テンプレート変数。変数が見つからない場合はnullにできます- 戻り値:
- 最終ハンドラーオブジェクト
exposePathWithinMapping
exposeUriTemplateVariables
match
@DeprecatedSE(since="7.0", forRemoval=true) public @Nullable RequestMatchResult match(jakarta.servlet.http.HttpServletRequest request, StringSE pattern) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。インターフェースからコピーされた説明:MatchableHandlerMappingリクエストが指定されたパターンに一致するかどうかを判別します。MatchableHandlerMapping.getPatternParser()がnullを返す場合、このメソッドを使用します。これは、HandlerMappingが文字列パターンマッチングを使用していることを意味します。- 次で指定:
- インターフェース
MatchableHandlerMappingのmatch - パラメーター:
request- 現在のリクエストpattern- マッチングするパターン- 戻り値:
- リクエストマッチングの結果、または存在しない場合は
null
getHandlerMap
getPathPatternHandlerMap
getHandlerMap()と同じですが、解析されたパターンがenabledの場合に入力されます。それ以外の場合は空です。- 導入:
- 5.3
supportsTypeLevelMappings
protected boolean supportsTypeLevelMappings()このハンドラーマッピングが型レベルのマッピングをサポートするかどうかを示します。デフォルトはfalseです。