クラス RequestMappingHandlerMapping

実装されたすべてのインターフェース:
AwareBeanNameAwareInitializingBeanApplicationContextAwareEmbeddedValueResolverAwareOrderedServletContextAwareMatchableHandlerMappingHandlerMapping

public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMapping implements MatchableHandlerMapping, EmbeddedValueResolverAware
@Controller クラスの型 レベルおよびメソッドレベルの @RequestMapping および @HttpExchange アノテーションから RequestMappingInfo インスタンスを作成します。

非推奨のメモ:

5.2.4 では、リクエストマッピングおよびコンテンツネゴシエーションにパス拡張を使用しないようにするために、useSuffixPatternMatch および useRegisteredSuffixPatternMatch が非推奨になりました(ContentNegotiationManagerFactoryBean でも同様の非推奨)。詳細については、#24179 号を参照してください。
導入:
3.1
作成者:
Arjen Poutsma, Rossen Stoyanchev, Sam Brannen, Olga Maciaszek-Sharma
  • コンストラクターの詳細

    • RequestMappingHandlerMapping

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

    • setPatternParser

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

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

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

      オーバーライド:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>setPatternParser 
      パラメーター:
      patternParser - 使用するパーサー
    • setUseSuffixPatternMatch

      @DeprecatedSE public void setUseSuffixPatternMatch(boolean useSuffixPatternMatch)
      使用すべきではありません。
      5.2.4 以降。パス拡張構成オプションの非推奨については、クラスレベルのメモを参照してください。このメソッドに代わるものはないため、5.2.x では false に設定する必要があります。5.3 では、デフォルトが false に変更され、このプロパティの使用は不要になります。
      パターンをリクエストに一致させるときにサフィックスパターン一致(".*" )を使用するかどうか。有効にすると、"/users" にマップされたメソッドは "/users.*" にも一致します。

      デフォルト値では、これは false に設定されています。

      また、許可する特定のサフィックスのより詳細な制御については、setUseRegisteredSuffixPatternMatch(boolean) を参照してください。

      注意 : setPatternParser(PathPatternParser) が構成されている場合、このプロパティは無視されます。

    • setUseRegisteredSuffixPatternMatch

      @DeprecatedSE public void setUseRegisteredSuffixPatternMatch(boolean useRegisteredSuffixPatternMatch)
      使用すべきではありません。
      5.2.4 以降。パス拡張構成オプションの非推奨については、クラスレベルのメモを参照してください。
      ContentNegotiationManager で明示的に登録されたパス拡張に対してのみ、サフィックスパターンマッチングが機能するかどうか。これは一般に、あいまいさを減らし、"." のような課題を回避するために推奨されます。他の理由でパスに表示されます。

      デフォルトでは、これは "false" に設定されています。

      注意 : setPatternParser(PathPatternParser) が構成されている場合、このプロパティは無視されます。

    • setUseTrailingSlashMatch

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

      プロパティの非推奨をサポートするために、6.0 でデフォルトが true から false に変更されました。

    • setPathPrefixes

      public void setPathPrefixes(MapSE<StringSE,PredicateSE<ClassSE<?>>> prefixes)
      コントローラーメソッドに適用するパスプレフィックスを構成します。

      プレフィックスは、コントローラー型がマップ内の対応する Predicate と一致するすべての @RequestMapping メソッドおよび @HttpExchange メソッドのマッピングを強化するために使用されます。入力マップの順序が予測可能であると仮定して、最初に一致する述語の接頭辞が使用されます。

      HandlerTypePredicate を使用してコントローラーをグループ化することを検討してください。

      パラメーター:
      prefixes - キーとしてパス接頭辞を持つマップ
      導入:
      5.1
    • getPathPrefixes

      public MapSE<StringSE,PredicateSE<ClassSE<?>>> getPathPrefixes()
      構成されたパスは、読み取り専用の、おそらく空のマップとしてプレフィックスします。
      導入:
      5.1
    • setContentNegotiationManager

      public void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager)
      リクエストされたメディア型を判別するために使用する ContentNegotiationManager を設定します。設定されていない場合、デフォルトのコンストラクターが使用されます。
    • getContentNegotiationManager

      public ContentNegotiationManager getContentNegotiationManager()
      設定された ContentNegotiationManager を返します。
    • setEmbeddedValueResolver

      public void setEmbeddedValueResolver(StringValueResolver resolver)
      インターフェースからコピーされた説明: EmbeddedValueResolverAware
      StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。
      次で指定:
      インターフェース EmbeddedValueResolverAwaresetEmbeddedValueResolver 
    • afterPropertiesSet

      public void afterPropertiesSet()
      クラスからコピーされた説明: AbstractHandlerMethodMapping
      初期化時にハンドラーメソッドを検出します。
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      オーバーライド:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>afterPropertiesSet 
      関連事項:
    • useSuffixPatternMatch

      @DeprecatedSE public boolean useSuffixPatternMatch()
      使用すべきではありません。
      5.2.4 以降。setUseSuffixPatternMatch(boolean) の非推奨通知を参照してください。
      パターンマッチングに登録済みのサフィックスを使用するかどうか。
    • useRegisteredSuffixPatternMatch

      @DeprecatedSE public boolean useRegisteredSuffixPatternMatch()
      使用すべきではありません。
      5.2.4 以降。setUseRegisteredSuffixPatternMatch(boolean) の非推奨通知を参照してください。
      パターンマッチングに登録済みのサフィックスを使用するかどうか。
    • useTrailingSlashMatch

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

      @Nullable @DeprecatedSE public ListSE<StringSE> getFileExtensions()
      使用すべきではありません。
      5.2.4 現在。パス拡張設定オプションの廃止に関するクラスレベルの注意を参照してください。
      サフィックスパターンマッチングに使用するファイル拡張子を返します。
    • getBuilderConfiguration

      public RequestMappingInfo.BuilderConfiguration getBuilderConfiguration()
      この HandlerMapping の内部構成を反映し、RequestMappingInfo.Builder.options(RequestMappingInfo.BuilderConfiguration) の設定に使用できる RequestMappingInfo.BuilderConfiguration を取得します。

      これは、registerHandlerMethod(Object, Method, RequestMappingInfo) を介したリクエストマッピングのプログラムによる登録に役立ちます。

      戻り値:
      内部状態を反映するビルダー構成
      導入:
      5.3.14
    • isHandler

      protected boolean isHandler(ClassSE<?> beanType)
      指定された型がハンドラーメソッドを持つハンドラーかどうか。

      ハンドラーが型レベルの @Controller アノテーションを持つことを期待します。

      次で指定:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>isHandler 
      パラメーター:
      beanType - チェックされている Bean の型
      戻り値:
      これがハンドラー型の場合は "true"、そうでない場合は "false"。
    • getMappingForMethod

      @Nullable protected RequestMappingInfo getMappingForMethod(MethodSE method, ClassSE<?> handlerType)
      型レベルおよびメソッドレベルの @RequestMapping および @HttpExchange アノテーションを使用して RequestMappingInfo を作成します。
      次で指定:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>getMappingForMethod 
      パラメーター:
      method - マッピングを提供する方法
      handlerType - ハンドラー型、場合によってはメソッドの宣言クラスのサブ型
      戻り値:
      作成された RequestMappingInfo、またはメソッドに @RequestMapping または @HttpExchange アノテーションがない場合は null 
      関連事項:
    • getCustomTypeCondition

      @Nullable protected RequestCondition<?> getCustomTypeCondition(ClassSE<?> handlerType)
      カスタム型レベルのリクエスト条件を指定します。カスタム RequestCondition は、カスタムリクエスト条件を組み合わせて比較できるように、このメソッドへのすべての呼び出しから同じ条件型が返される限り、どの型でもかまいません。

      カスタム条件型用に AbstractRequestCondition を継承し、CompositeRequestCondition を使用して複数のカスタム条件を提供することを検討してください。

      パラメーター:
      handlerType - 条件を作成するハンドラー型
      戻り値:
      条件、または null
    • getCustomMethodCondition

      @Nullable protected RequestCondition<?> getCustomMethodCondition(MethodSE method)
      カスタムのメソッドレベルのリクエスト条件を指定します。カスタム RequestCondition は、カスタムリクエスト条件を組み合わせて比較できるように、このメソッドへのすべての呼び出しから同じ条件型が返される限り、どの型でもかまいません。

      カスタム条件型用に AbstractRequestCondition を継承し、CompositeRequestCondition を使用して複数のカスタム条件を提供することを検討してください。

      パラメーター:
      method - 条件を作成するハンドラーメソッド
      戻り値:
      条件、または null
    • createRequestMappingInfo

      protected RequestMappingInfo createRequestMappingInfo(RequestMapping requestMapping, @Nullable RequestCondition<?> customCondition)
      提供された @RequestMapping アノテーション、メタアノテーション、またはアノテーション階層内でアノテーション属性をマージした合成結果から RequestMappingInfo を作成します。
    • createRequestMappingInfo

      protected RequestMappingInfo createRequestMappingInfo(HttpExchange httpExchange, @Nullable RequestCondition<?> customCondition)
      提供された @HttpExchange アノテーション、メタアノテーション、またはアノテーション階層内でアノテーション属性をマージした合成結果から RequestMappingInfo を作成します。
      導入:
      6.1
    • resolveEmbeddedValuesInPatterns

      protected StringSE[] resolveEmbeddedValuesInPatterns(StringSE[] patterns)
      指定されたパターンの配列のプレースホルダー値を解決します。
      戻り値:
      更新されたパターンを持つ新しい配列
    • registerMapping

      public void registerMapping(RequestMappingInfo mapping, ObjectSE handler, MethodSE method)
      クラスからコピーされた説明: AbstractHandlerMethodMapping
      指定されたマッピングを登録します。

      このメソッドは、初期化が完了した後、実行時に呼び出すことができます。

      オーバーライド:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>registerMapping 
      パラメーター:
      mapping - ハンドラーメソッドのマッピング
      handler - ハンドラー
      method - メソッド
    • registerHandlerMethod

      protected void registerHandlerMethod(ObjectSE handler, MethodSE method, RequestMappingInfo mapping)
      ハンドラーメソッドとその一意のマッピングを登録します。検出された各ハンドラーメソッドに対して起動時に呼び出されます。

      注意 : RequestMappingInfo を作成するには、getBuilderConfiguration() を使用し、この HandlerMapping の構成方法と一致するように RequestMappingInfo.Builder.options(RequestMappingInfo.BuilderConfiguration) のオプションを設定してください。これは、たとえば、PathPattern または PathMatcher ベースのマッチングを確実に使用するために重要です。

      オーバーライド:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>registerHandlerMethod 
      パラメーター:
      handler - ハンドラーまたはハンドラーインスタンスの Bean 名
      method - 登録する方法
      mapping - ハンドラーメソッドに関連付けられたマッピング条件
    • match

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

      @Nullable protected CorsConfiguration initCorsConfiguration(ObjectSE handler, MethodSE method, RequestMappingInfo mappingInfo)
      クラスからコピーされた説明: AbstractHandlerMethodMapping
      マッピングの CORS 設定を抽出して返します。
      オーバーライド:
      クラス AbstractHandlerMethodMapping<RequestMappingInfo>initCorsConfiguration