クラス AbstractHandlerMapping

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

public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport implements HandlerMapping, Ordered, BeanNameAware
HandlerMapping 実装の抽象基本クラス。パスパターンによってマップされたハンドラーインターセプターを含む、順序付け、デフォルトハンドラー、ハンドラーインターセプターをサポートします。

メモ: この基本クラスは、HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE の公開をサポートしていませ。この属性のサポートは、通常リクエスト URL マッピングに基づいた具象サブクラスまでです。

導入:
07.04.2003
作成者:
Juergen Hoeller, Rossen Stoyanchev, Sam Brannen
関連事項:
  • フィールドの詳細

    • mappingsLogger

      protected final Log mappingsLogger
      リクエストマッピング専用の「非表示」ロガー。
  • コンストラクターの詳細

    • AbstractHandlerMapping

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

    • setDefaultHandler

      public void setDefaultHandler(@Nullable ObjectSE defaultHandler)
      このハンドラーマッピングのデフォルトハンドラーを設定します。特定のマッピングが見つからなかった場合、このハンドラーが返されます。

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

    • getDefaultHandler

      @Nullable public ObjectSE getDefaultHandler()
      このハンドラーマッピングのデフォルトハンドラーを返します。ない場合は null を返します。
    • setPatternParser

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

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

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

      パラメーター:
      patternParser - 使用するパーサー
      導入:
      5.3
    • getPatternParser

      @Nullable public PathPatternParser getPatternParser()
      configured PathPatternParser または null を返します。それ以外の場合は、代わりに AntPathMatcher との文字列パターンマッチングが有効になっていることを示します。
      導入:
      5.3
    • setAlwaysUseFullPath

      @DeprecatedSE(since="6.0") public void setAlwaysUseFullPath(boolean alwaysUseFullPath)
      使用すべきではありません。
      6.0 現在、setUrlPathHelper(UrlPathHelper) の使用を推奨
      構成された UrlPathHelper の同じプロパティへのショートカット。

      注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。

      関連事項:
    • setUrlDecode

      @DeprecatedSE(since="6.0") public void setUrlDecode(boolean urlDecode)
      使用すべきではありません。
      6.0 現在、setUrlPathHelper(UrlPathHelper) の使用を推奨
      基になる UrlPathHelper の同じプロパティへのショートカット。

      注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。

      関連事項:
    • setRemoveSemicolonContent

      @DeprecatedSE(since="6.0") public void setRemoveSemicolonContent(boolean removeSemicolonContent)
      使用すべきではありません。
      6.0 現在、setUrlPathHelper(UrlPathHelper) の使用を推奨
      基になる UrlPathHelper の同じプロパティへのショートカット。

      注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。

      関連事項:
    • setUrlPathHelper

      public void setUrlPathHelper(UrlPathHelper urlPathHelper)
      ルックアップパスの解決に使用するように UrlPathHelper を構成します。

      注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。

    • getUrlPathHelper

      public UrlPathHelper getUrlPathHelper()
      configured UrlPathHelper を返します。
    • setPathMatcher

      public void setPathMatcher(PathMatcher pathMatcher)
      使用する PathMatcher を構成します。

      注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。

      デフォルトでは、これは AntPathMatcher です。

      関連事項:
    • getPathMatcher

      public PathMatcher getPathMatcher()
      configured PathMatcher を返します。
    • setInterceptors

      public void setInterceptors(ObjectSE... interceptors)
      このハンドラーマッピングによってマップされたすべてのハンドラーに適用するインターセプターを設定します。

      サポートされているインターセプター型は、HandlerInterceptorWebRequestInterceptorMappedInterceptor です。マップされたインターセプターは、パスパターンに一致するリクエスト URL にのみ適用されます。マップされたインターセプター Bean も、初期化中に型ごとに検出されます。

      パラメーター:
      interceptors - ハンドラーインターセプターの配列
      関連事項:
    • getAdaptedInterceptors

      @Nullable public final HandlerInterceptor[] getAdaptedInterceptors()
      HandlerInterceptor に適合したすべての構成済みインターセプターを返します。
      戻り値:
      構成されたインターセプターの配列、または構成されていない場合は null。このメソッドは、あまりにも早く呼び出された場合、またはより具体的には ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext) の前に呼び出された場合にも null を返します。
    • getMappedInterceptors

      @Nullable protected final MappedInterceptor[] getMappedInterceptors()
      構成されたすべての MappedInterceptor を配列として返します。
      戻り値:
      MappedInterceptor の配列。ない場合は null 
    • setCorsConfigurations

      public void setCorsConfigurations(MapSE<StringSE,CorsConfiguration> corsConfigurations)
      「グローバル」CORS 構成マッピングを設定します。最初に一致する URL パターンは、使用する CorsConfiguration を決定し、次に、選択されたハンドラーの CorsConfiguration でさらに combined になります。

      これは setCorsConfigurationSource(CorsConfigurationSource) と相互に排他的です。

      導入:
      4.2
      関連事項:
    • setCorsConfigurationSource

      public void setCorsConfigurationSource(CorsConfigurationSource source)
      「グローバル」CORS 設定に CorsConfigurationSource を設定します。ソースによって決定された CorsConfiguration は、選択されたハンドラーの CorsConfiguration を持つ combined です。

      これは setCorsConfigurations(Map) と相互に排他的です。

      導入:
      5.1
      関連事項:
    • getCorsConfigurationSource

      @Nullable public CorsConfigurationSource getCorsConfigurationSource()
      configured CorsConfigurationSource がある場合は、それを返します。
      導入:
      5.3
    • setCorsProcessor

      public void setCorsProcessor(CorsProcessor corsProcessor)
      一致する CorsConfiguration をリクエストに適用するために使用するカスタム CorsProcessor を構成します。

      デフォルトでは、DefaultCorsProcessor が使用されます。

      導入:
      4.2
    • getCorsProcessor

      public CorsProcessor getCorsProcessor()
      設定された CorsProcessor を返します。
    • setOrder

      public void setOrder(int order)
      この HandlerMapping Bean の順序値を指定します。

      デフォルト値は Ordered.LOWEST_PRECEDENCE で、順序なしを意味します。

      関連事項:
    • getOrder

      public int getOrder()
      インターフェースからコピーされた説明: Ordered
      このオブジェクトの順序値を取得します。

      値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup の値に多少似ています)。

      同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。

      次で指定:
      インターフェース OrderedgetOrder 
      戻り値:
      オーダー額
      関連事項:
    • setBeanName

      public void setBeanName(StringSE name)
      インターフェースからコピーされた説明: BeanNameAware
      この Bean を作成した Bean ファクトリで Bean の名前を設定します。

      通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。

      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      name - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
    • formatMappingName

      protected StringSE formatMappingName()
    • initApplicationContext

      protected void initApplicationContext() throws BeansException
      インターセプターを初期化します。
      オーバーライド:
      クラス ApplicationObjectSupportinitApplicationContext 
      例外:
      ApplicationContextException - 初期化エラーの場合
      BeansException - ApplicationContext メソッドによってスローされた場合
      関連事項:
    • extendInterceptors

      protected void extendInterceptors(ListSE<ObjectSE> interceptors)
      構成されたインターセプター(setInterceptors(java.lang.Object...) を参照)を指定すると、サブクラスがオーバーライドして追加のインターセプターを登録できる拡張フック。

      initInterceptors() が指定されたインターセプターを HandlerInterceptor インスタンスに適応させる前に呼び出されます。

      デフォルトの実装は空です。

      パラメーター:
      interceptors - 構成されたインターセプターリスト(非 null)。既存のインターセプターの前後にインターセプターを追加できます
    • detectMappedInterceptors

      protected void detectMappedInterceptors(ListSE<HandlerInterceptor> mappedInterceptors)
      MappedInterceptor の Bean を検出し、マッピングされたインターセプターのリストに追加します。

      これは、setInterceptors(java.lang.Object...) を介して提供されたすべての MappedInterceptor に加えて呼び出され、デフォルトで、現在のコンテキストとその祖先から型 MappedInterceptor のすべての Bean を追加します。サブクラスはこのポリシーをオーバーライドおよび調整できます。

      パラメーター:
      mappedInterceptors - 追加する空のリスト
    • initInterceptors

      protected void initInterceptors()
      WebRequestInterceptorHandlerInterceptor に適応させる指定されたインターセプターを初期化します。
      関連事項:
    • adaptInterceptor

      protected HandlerInterceptor adaptInterceptor(ObjectSE interceptor)
      指定されたインターセプターオブジェクトを HandlerInterceptor に適合させます。

      デフォルトでは、サポートされるインターセプター型は HandlerInterceptor および WebRequestInterceptor です。指定された各 WebRequestInterceptorWebRequestHandlerInterceptorAdapter でラップされます。

      パラメーター:
      interceptor - インターセプター
      戻り値:
      インターセプターダウンキャストまたは HandlerInterceptor に適合
      関連事項:
    • usesPathPatterns

      public boolean usesPathPatterns()
      この HandlerMapping が解析された PathPattern を使用するために enabled であった場合、"true" を返します。
      次で指定:
      インターフェース HandlerMappingusesPathPatterns 
    • getHandler

      @Nullable public final HandlerExecutionChain getHandler(HttpServletRequestEE request) throws ExceptionSE
      特定のリクエストのハンドラーを検索し、特定のハンドラーが見つからない場合はデフォルトのハンドラーにフォールバックします。
      次で指定:
      インターフェース HandlerMappinggetHandler 
      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      対応するハンドラーインスタンス、またはデフォルトハンドラー
      例外:
      ExceptionSE - 内部エラーがある場合
      関連事項:
    • getHandlerInternal

      @Nullable protected abstract ObjectSE getHandlerInternal(HttpServletRequestEE request) throws ExceptionSE
      特定のリクエストのハンドラーを検索し、特定のリクエストが見つからない場合は null を返します。このメソッドは getHandler(jakarta.servlet.http.HttpServletRequest) によって呼び出されます。null の戻り値は、デフォルトのハンドラー(設定されている場合)につながります。

      CORS プリフライトリクエストでは、このメソッドはプリフライトリクエストではなく、URL パス、"Access-Control-Request-Method" ヘッダーからの HTTP メソッド、ヘッダーに基づいて予想される実際のリクエストに対して一致を返す必要があります "Access-Control-Request-Headers" ヘッダーから、getCorsConfiguration(Object, HttpServletRequest) を介して CORS 設定を取得できるようにします。

      メモ: このメソッドは、ハンドラーオブジェクトと動的に決定されたインターセプターを組み合わせて、事前に構築された HandlerExecutionChain を返すこともあります。静的に指定されたインターセプターは、そのような既存のチェーンにマージされます。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      対応するハンドラーインスタンス。見つからない場合は null 
      例外:
      ExceptionSE - 内部エラーがある場合
    • initLookupPath

      protected StringSE initLookupPath(HttpServletRequestEE request)
      リクエストのマッピングに使用するパスを初期化します。

      解析されたパターンが enabled の場合、解析された RequestPath は、DispatcherServlet または ServletRequestPathFilter によって外部的に parsed であると予想されます。

      それ以外の場合、PathMatcher を介した文字列パターンマッチングの場合、このメソッドによるパスは resolved です。

      導入:
      5.3
    • getHandlerExecutionChain

      protected HandlerExecutionChain getHandlerExecutionChain(ObjectSE handler, HttpServletRequestEE request)
      該当するインターセプターを含む、指定されたハンドラー用の HandlerExecutionChain を作成します。

      デフォルトの実装では、指定されたハンドラー、ハンドラーマッピングの共通インターセプター、現在のリクエスト URL に一致する MappedInterceptors を使用して、標準の HandlerExecutionChain を構築します。インターセプターは、登録された順に追加されます。サブクラスは、インターセプターのリストを継承 / 再配置するためにこれをオーバーライドできます。

      注意 : 渡されたハンドラーオブジェクトは、生のハンドラーまたは事前に作成された HandlerExecutionChain の場合があります。このメソッドは、新しい HandlerExecutionChain の構築または既存のチェーンの拡張のいずれかで、これら 2 つのケースを明示的に処理する必要があります。

      カスタムサブクラスにインターセプターを単純に追加するには、super.getHandlerExecutionChain(handler, request) を呼び出し、返されたチェーンオブジェクトで HandlerExecutionChain.addInterceptor(org.springframework.web.servlet.HandlerInterceptor) を呼び出すことを検討してください。

      パラメーター:
      handler - 解決されたハンドラーインスタンス (非 null)
      request - 現在の HTTP リクエスト
      戻り値:
      HandlerExecutionChain (非 null)
      関連事項:
    • hasCorsConfigurationSource

      protected boolean hasCorsConfigurationSource(ObjectSE handler)
      このハンドラーに CorsConfigurationSource がある場合、true を返します。
      導入:
      5.2
    • getCorsConfiguration

      @Nullable protected CorsConfiguration getCorsConfiguration(ObjectSE handler, HttpServletRequestEE request)
      指定されたハンドラーの CORS 構成を取得します。
      パラメーター:
      handler - チェックするハンドラー(非 null)。
      request - 現在のリクエスト。
      戻り値:
      ハンドラーの CORS 構成、ない場合は null 
      導入:
      4.2
    • getCorsHandlerExecutionChain

      protected HandlerExecutionChain getCorsHandlerExecutionChain(HttpServletRequestEE request, HandlerExecutionChain chain, @Nullable CorsConfiguration config)
      CORS リクエスト用に HandlerExecutionChain を更新し、チェーン の先頭にインターセプターを挿入して CORS チェックを実行し、プリフライトリクエストに対して no-op ハンドラーも使用します。
      パラメーター:
      request - 現在のリクエスト
      chain - 更新するチェーン
      config - ハンドラーに適用される CORS 構成
      導入:
      4.2