クラス AbstractUrlHandlerMapping

実装されたすべてのインターフェース:
AwareBeanNameAwareApplicationContextAwareOrderedServletContextAwareMatchableHandlerMappingHandlerMapping
既知の直属サブクラス
AbstractDetectingUrlHandlerMappingSimpleUrlHandlerMapping

public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping implements MatchableHandlerMapping
URL マッピング HandlerMapping 実装の抽象基本クラス。

"/test/*","/test/**" などのリテラル一致とパターン一致をサポートします。パターン構文の詳細については、解析されたパターンが enabled の場合は PathPattern を参照するか、それ以外の場合は AntPathMatcher を参照してください。構文はほぼ同じですが、PathPattern 構文は Web アプリケーション向けに調整されており、その実装はより効率的です。

現在のリクエストパスに最も正確に一致するものを見つけるために、すべてのパスパターンがチェックされます。ここで、「最も正確な」は、現在のリクエストパスに一致する最長のパスパターンです。

導入:
16.04.2003
作成者:
Juergen Hoeller, Arjen Poutsma
  • コンストラクターの詳細

    • AbstractUrlHandlerMapping

      public AbstractUrlHandlerMapping()
  • メソッドの詳細

    • setPatternParser

      public void setPatternParser(@Nullable PathPatternParser patternParser)
      クラスからコピーされた説明: AbstractHandlerMapping
      URL パスマッチングのために patterns を解析するように PathPatternParser を設定します。解析されたパターンは、AntPathMatcher による文字列パスマッチングのよりモダンで効率的な代替手段を提供します。

      注意 : このプロパティは、以下のプロパティと相互に排他的です。これらはすべて、解析されたパターンには必要なく、PathPatternParser が使用可能な場合は無視されます。

      デフォルトでは、6.0 の時点で、これはデフォルト設定の PathPatternParser インスタンスに設定されているため、解析済みパターンの使用が有効になっています。これを null に設定すると、代わりに AntPathMatcher による文字列パスマッチングに切り替わります。

      オーバーライド:
      クラス AbstractHandlerMappingsetPatternParser 
      パラメーター:
      patternParser - 使用するパーサー
    • setRootHandler

      public void setRootHandler(@Nullable ObjectSE rootHandler)
      このハンドラーマッピングのルートハンドラー、つまり、ルートパス("/")に登録されるハンドラーを設定します。

      デフォルトは null で、ルートハンドラーがないことを示します。

    • getRootHandler

      @Nullable public ObjectSE getRootHandler()
      このハンドラーマッピングのルートハンドラーを返します(「/"), または null がない場合は登録済み)。
    • setUseTrailingSlashMatch

      @DeprecatedSE(since="6.0") public void setUseTrailingSlashMatch(boolean useTrailingSlashMatch)
      使用すべきではありません。
      末尾のスラッシュの有無に関係なく、URL と一致するかどうか。有効にすると、"/users" などの URL パターンも "/users/" と一致します。

      デフォルト値は false です。

    • useTrailingSlashMatch

      public boolean useTrailingSlashMatch()
      末尾のスラッシュの有無に関係なく、URL に一致するかどうか。
    • setLazyInitHandlers

      public void setLazyInitHandlers(boolean lazyInitHandlers)
      ハンドラーを遅延初期化するかどうかを設定します。プロトタイプは常に遅延初期化されるため、シングルトンハンドラーにのみ適用できます。積極的な初期化により、コントローラーオブジェクトを直接参照することで効率が向上するため、デフォルトは "false" です。

      コントローラーの遅延初期化を許可する場合は、コントローラーを "lazy-init" にして、このフラグを true に設定します。これらを "lazy-init" にするだけでは機能しません。この場合、ハンドラーマッピングからの参照を介して初期化されるためです。

    • getHandlerInternal

      @Nullable protected ObjectSE getHandlerInternal(HttpServletRequestEE request) throws ExceptionSE
      指定されたリクエストの URL パスのハンドラーを検索します。
      次で指定:
      クラス AbstractHandlerMappinggetHandlerInternal 
      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      ハンドラーインスタンス。見つからない場合は null 
      例外:
      ExceptionSE - 内部エラーがある場合
    • lookupHandler

      @Nullable protected ObjectSE lookupHandler(RequestPath path, StringSE lookupPath, HttpServletRequestEE request) throws ExceptionSE
      指定された URL パスのハンドラーインスタンスを検索します。このメソッドは、解析された PathPatternenabled である場合に使用されます。
      パラメーター:
      path - 解析された RequestPath
      lookupPath - 直接ヒットをチェックするための文字列 lookupPath
      request - 現在の HTTP リクエスト
      戻り値:
      一致するハンドラー、または見つからない場合は null 
      例外:
      ExceptionSE
      導入:
      5.3
    • lookupHandler

      @Nullable protected ObjectSE lookupHandler(StringSE lookupPath, HttpServletRequestEE request) throws ExceptionSE
      指定された URL パスのハンドラーインスタンスを検索します。このメソッドは、PathMatcher との文字列パターンマッチングが使用されている場合に使用されます。
      パラメーター:
      lookupPath - パターンを照合するパス
      request - 現在の HTTP リクエスト
      戻り値:
      一致するハンドラー、または見つからない場合は null 
      例外:
      ExceptionSE
      関連事項:
    • validateHandler

      protected void validateHandler(ObjectSE handler, HttpServletRequestEE 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_ATTRIBUTEHandlerMapping.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

      @Nullable public RequestMatchResult match(HttpServletRequestEE request, StringSE pattern)
      インターフェースからコピーされた説明: MatchableHandlerMapping
      リクエストが指定されたパターンに一致するかどうかを判別します。MatchableHandlerMapping.getPatternParser() が null を返す場合、このメソッドを使用します。これは、HandlerMapping が文字列パターンマッチングを使用していることを意味します。
      次で指定:
      インターフェース MatchableHandlerMappingmatch 
      パラメーター:
      request - 現在のリクエスト
      pattern - マッチングするパターン
      戻り値:
      リクエストマッチングの結果、または存在しない場合は null 
    • registerHandler

      protected void registerHandler(StringSE[] urlPaths, StringSE beanName) throws BeansException, IllegalStateExceptionSE
      指定された URL パスに指定されたハンドラーを登録します。
      パラメーター:
      urlPaths - Bean がマッピングされる URL
      beanName - ハンドラー Bean の名前
      例外:
      BeansException - ハンドラーを登録できなかった場合
      IllegalStateExceptionSE - 競合するハンドラーが登録されている場合
    • registerHandler

      protected void registerHandler(StringSE urlPath, ObjectSE handler) throws BeansException, IllegalStateExceptionSE
      指定された URL パスに指定されたハンドラーを登録します。
      パラメーター:
      urlPath - Bean がマッピングされる URL
      handler - ハンドラーインスタンスまたはハンドラー Bean name String (Bean 名は、対応するハンドラー Bean に自動的に解決されます)
      例外:
      BeansException - ハンドラーを登録できなかった場合
      IllegalStateExceptionSE - 競合するハンドラーが登録されている場合
    • getHandlerMap

      public final MapSE<StringSE,ObjectSE> getHandlerMap()
      登録されたパスまたはパターンをキーとして、ハンドラーオブジェクト(または lazy-init ハンドラーの場合はハンドラー Bean 名)を値として、ハンドラーマッピングを読み取り専用マップとして返します。
      関連事項:
    • getPathPatternHandlerMap

      public final MapSE<PathPattern,ObjectSE> getPathPatternHandlerMap()
      getHandlerMap() と同じですが、解析されたパターンが enabled の場合に入力されます。それ以外の場合は空です。
      導入:
      5.3
    • supportsTypeLevelMappings

      protected boolean supportsTypeLevelMappings()
      このハンドラーマッピングが型レベルのマッピングをサポートするかどうかを示します。デフォルトは false です。