public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping implements MatchableHandlerMapping
HandlerMapping
実装の抽象基本クラス。ハンドラーを URL にマッピングし、構成可能な URL 検索を行うためのインフラストラクチャを提供します。後者の詳細については、"alwaysUseFullPath" プロパティを参照してください。 直接一致をサポートします。登録された "/test" は "/test" と一致し、さまざまな Ant スタイルのパターンが一致します。登録された "/t*" パターンは "/test" と "/team" の両方に一致し、"/test/*" は "/test" ディレクトリ内のすべてのパスに一致し、"/test/**" は "/test" より下のすべてのパスに一致します。詳細については、AntPathMatcher
javadoc を参照してください。
すべてのパスパターンを検索して、現在のリクエストパスに最も正確に一致するものを見つけます。最も正確な一致は、現在のリクエストパスに一致する最長パスパターンとして定義されます。
logger
BEST_MATCHING_HANDLER_ATTRIBUTE, BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, MATRIX_VARIABLES_ATTRIBUTE, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
AbstractUrlHandlerMapping() |
修飾子と型 | メソッドと説明 |
---|---|
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 パスのハンドラーを検索します。 |
MapSE<StringSE, ObjectSE> | getHandlerMap() 登録済みのパスをキーとして、ハンドラーオブジェクト(または lazy-init ハンドラーの場合はハンドラー Bean 名)を値として、変更できないマップとして登録済みのハンドラーを返します。 |
ObjectSE | getRootHandler() このハンドラーマッピングのルートハンドラーを返します(「/"), または null がない場合は登録済み)。 |
protected ObjectSE | lookupHandler(StringSE urlPath, HttpServletRequestEE request) 指定された URL パスのハンドラーインスタンスを検索します。 |
RequestMatchResult | 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 | setRootHandler(ObjectSE rootHandler) このハンドラーマッピングのルートハンドラー、つまり、ルートパス("/")に登録されるハンドラーを設定します。 |
void | setUseTrailingSlashMatch(boolean useTrailingSlashMatch) 末尾のスラッシュの有無に関係なく、URL に一致するかどうか。 |
protected boolean | supportsTypeLevelMappings() このハンドラーマッピングが型レベルのマッピングをサポートするかどうかを示します。 |
boolean | useTrailingSlashMatch() 末尾のスラッシュの有無に関係なく、URL に一致するかどうか。 |
protected void | validateHandler(ObjectSE handler, HttpServletRequestEE request) 現在のリクエストに対して指定されたハンドラーを検証します。 |
adaptInterceptor, detectMappedInterceptors, extendInterceptors, formatMappingName, getAdaptedInterceptors, getCorsConfiguration, getCorsConfigurations, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initApplicationContext, initInterceptors, setAlwaysUseFullPath, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
getHandler
public void setRootHandler(@Nullable ObjectSE rootHandler)
デフォルトは null
で、ルートハンドラーがないことを示します。
@Nullable public ObjectSE getRootHandler()
null
がない場合は登録済み)。public void setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
デフォルト値は false
です。
public boolean useTrailingSlashMatch()
public void setLazyInitHandlers(boolean lazyInitHandlers)
コントローラーの遅延初期化を許可する場合は、コントローラーを "lazy-init" にして、このフラグを true に設定します。これらを "lazy-init" にするだけでは機能しません。この場合、ハンドラーマッピングからの参照を介して初期化されるためです。
@Nullable protected ObjectSE getHandlerInternal(HttpServletRequestEE request) throws ExceptionSE
AbstractHandlerMapping
の getHandlerInternal
request
- 現在の HTTP リクエスト null
ExceptionSE
- 内部エラーがある場合 @Nullable protected ObjectSE lookupHandler(StringSE urlPath, HttpServletRequestEE request) throws ExceptionSE
直接一致をサポートします。登録された "/test" は "/test" と一致し、さまざまな Ant スタイルのパターンが一致します。登録された "/t*" は、"/test" と "/team" の両方に一致します。詳細については、AntPathMatcher クラスを参照してください。
最も正確なパターンを探します。最も正確なパターンは最長パスパターンとして定義されます。
urlPath
- Bean がマップされる URLrequest
- 現在の HTTP リクエスト (マッピング内のパスを公開する)null
ExceptionSE
exposePathWithinMapping(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest)
, AntPathMatcher
protected void validateHandler(ObjectSE handler, HttpServletRequestEE request) throws ExceptionSE
デフォルトの実装は空です。たとえば、URL マッピングで表される特定の前提条件を強制するために、サブクラスでオーバーライドできます。
handler
- 検証するハンドラーオブジェクト request
- 現在の HTTP リクエスト ExceptionSE
- 検証に失敗した場合 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
を公開して、指定された生のハンドラーのハンドラーオブジェクトを作成します。 デフォルトの実装は、path 属性と uri テンプレート変数を公開する特別なインターセプターで HandlerExecutionChain
を構築します
rawHandler
- 公開する生のハンドラー pathWithinMapping
- ハンドラーを実行する前に公開するパス uriTemplateVariables
- URI テンプレート変数。変数が見つからない場合は null
にできます protected void exposePathWithinMapping(StringSE bestMatchingPattern, StringSE pathWithinMapping, HttpServletRequestEE request)
pathWithinMapping
- 現在のマッピング内のパス request
- パスを公開するリクエスト HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
protected void exposeUriTemplateVariables(MapSE<StringSE,StringSE> uriTemplateVariables, HttpServletRequestEE request)
uriTemplateVariables
- URI テンプレート変数 request
- パスを公開するリクエスト HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
@Nullable public RequestMatchResult match(HttpServletRequestEE request, StringSE pattern)
MatchableHandlerMapping
MatchableHandlerMapping
の match
request
- 現在のリクエスト pattern
- マッチングするパターン null
protected void registerHandler(StringSE[] urlPaths, StringSE beanName) throws BeansException, IllegalStateExceptionSE
urlPaths
- Bean がマッピングされる URLbeanName
- ハンドラー Bean の名前 BeansException
- ハンドラーを登録できなかった場合 IllegalStateExceptionSE
- 競合するハンドラーが登録されている場合 protected void registerHandler(StringSE urlPath, ObjectSE handler) throws BeansException, IllegalStateExceptionSE
urlPath
- Bean がマッピングされる URLhandler
- ハンドラーインスタンスまたはハンドラー Bean name String (Bean 名は、対応するハンドラー Bean に自動的に解決されます)BeansException
- ハンドラーを登録できなかった場合 IllegalStateExceptionSE
- 競合するハンドラーが登録されている場合 public final MapSE<StringSE,ObjectSE> getHandlerMap()
protected boolean supportsTypeLevelMappings()
false
です。