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