クラス 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 ObjectSE
buildPathExposingHandler
(ObjectSE rawHandler, StringSE bestMatchingPattern, StringSE pathWithinMapping, MapSE<StringSE, StringSE> uriTemplateVariables) ハンドラーを実行する前に、実際のハンドラーHandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
とHandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE
を公開して、指定された生のハンドラーのハンドラーオブジェクトを作成します。protected void
exposePathWithinMapping
(StringSE bestMatchingPattern, StringSE pathWithinMapping, HttpServletRequestEE request) 現在のマッピング内のパスをリクエスト属性として公開します。protected void
exposeUriTemplateVariables
(MapSE<StringSE, StringSE> uriTemplateVariables, HttpServletRequestEE request) URI テンプレート変数をリクエスト属性として公開します。protected ObjectSE
getHandlerInternal
(HttpServletRequestEE request) 指定されたリクエストの URL パスのハンドラーを検索します。登録されたパスまたはパターンをキーとして、ハンドラーオブジェクト(または lazy-init ハンドラーの場合はハンドラー Bean 名)を値として、ハンドラーマッピングを読み取り専用マップとして返します。final MapSE<PathPattern,
ObjectSE> getHandlerMap()
と同じですが、解析されたパターンがenabled
の場合に入力されます。それ以外の場合は空です。このハンドラーマッピングのルートハンドラーを返します(「/"), またはnull
がない場合は登録済み)。protected ObjectSE
lookupHandler
(StringSE lookupPath, HttpServletRequestEE request) 指定された URL パスのハンドラーインスタンスを検索します。protected ObjectSE
lookupHandler
(RequestPath path, StringSE lookupPath, HttpServletRequestEE request) 指定された URL パスのハンドラーインスタンスを検索します。match
(HttpServletRequestEE request, StringSE pattern) リクエストが指定されたパターンに一致するかどうかを判別します。protected void
registerHandler
(StringSE[] urlPaths, StringSE beanName) 指定された URL パスに指定されたハンドラーを登録します。protected void
registerHandler
(StringSE urlPath, ObjectSE handler) 指定された URL パスに指定されたハンドラーを登録します。void
setLazyInitHandlers
(boolean lazyInitHandlers) ハンドラーを遅延初期化するかどうかを設定します。void
setPatternParser
(PathPatternParser patternParser) URL パスマッチングのためにpatterns
を解析するようにPathPatternParser
を設定します。void
setRootHandler
(ObjectSE rootHandler) このハンドラーマッピングのルートハンドラー、つまり、ルートパス("/")に登録されるハンドラーを設定します。void
setUseTrailingSlashMatch
(boolean useTrailingSlashMatch) 使用すべきではありません。protected boolean
このハンドラーマッピングが型レベルのマッピングをサポートするかどうかを示します。boolean
末尾のスラッシュの有無に関係なく、URL に一致するかどうか。protected void
validateHandler
(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
クラスからコピーされた説明:AbstractHandlerMapping
URL パスマッチングのために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)
を参照