クラス AbstractHandlerMapping
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、ApplicationContextAware
、Ordered
、ServletContextAware
、HandlerMapping
HandlerMapping
実装の抽象基本クラス。パスパターンによってマップされたハンドラーインターセプターを含む、順序付け、デフォルトハンドラー、ハンドラーインターセプターをサポートします。 メモ: この基本クラスは、HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
の公開をサポートしていません。この属性のサポートは、通常リクエスト URL マッピングに基づいた具象サブクラスまでです。
- 導入:
- 07.04.2003
- 作成者:
- Juergen Hoeller, Rossen Stoyanchev, Sam Brannen
- 関連事項:
フィールドサマリー
フィールドクラス 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 HandlerInterceptor
adaptInterceptor
(ObjectSE interceptor) 指定されたインターセプターオブジェクトをHandlerInterceptor
に適合させます。protected void
detectMappedInterceptors
(ListSE<HandlerInterceptor> mappedInterceptors) 型MappedInterceptor
の Bean を検出し、マッピングされたインターセプターのリストに追加します。protected void
extendInterceptors
(ListSE<ObjectSE> interceptors) 構成されたインターセプター(setInterceptors(java.lang.Object...)
を参照)を指定すると、サブクラスがオーバーライドして追加のインターセプターを登録できる拡張フック。protected StringSE
final HandlerInterceptor[]
HandlerInterceptor
に適合したすべての構成済みインターセプターを返します。protected CorsConfiguration
getCorsConfiguration
(ObjectSE handler, HttpServletRequestEE request) 指定されたハンドラーの CORS 構成を取得します。configured
CorsConfigurationSource
がある場合は、それを返します。protected HandlerExecutionChain
getCorsHandlerExecutionChain
(HttpServletRequestEE request, HandlerExecutionChain chain, CorsConfiguration config) CORS 関連の処理のために HandlerExecutionChain を更新します。設定されたCorsProcessor
を返します。このハンドラーマッピングのデフォルトハンドラーを返します。ない場合はnull
を返します。final HandlerExecutionChain
getHandler
(HttpServletRequestEE request) 特定のリクエストのハンドラーを検索し、特定のハンドラーが見つからない場合はデフォルトのハンドラーにフォールバックします。protected HandlerExecutionChain
getHandlerExecutionChain
(ObjectSE handler, HttpServletRequestEE request) 該当するインターセプターを含む、指定されたハンドラー用のHandlerExecutionChain
を作成します。protected abstract ObjectSE
getHandlerInternal
(HttpServletRequestEE request) 特定のリクエストのハンドラーを検索し、特定のリクエストが見つからない場合はnull
を返します。protected final MappedInterceptor[]
構成されたすべてのMappedInterceptor
を配列として返します。int
getOrder()
このオブジェクトの順序値を取得します。configured
PathMatcher
を返します。configured
PathPatternParser
またはnull
を返します。それ以外の場合は、代わりにAntPathMatcher
との文字列パターンマッチングが有効になっていることを示します。configured
UrlPathHelper
を返します。protected boolean
hasCorsConfigurationSource
(ObjectSE handler) このハンドラーにCorsConfigurationSource
がある場合、true
を返します。protected void
インターセプターを初期化します。protected void
WebRequestInterceptor
をHandlerInterceptor
に適応させる指定されたインターセプターを初期化します。protected StringSE
initLookupPath
(HttpServletRequestEE request) リクエストのマッピングに使用するパスを初期化します。void
setAlwaysUseFullPath
(boolean alwaysUseFullPath) 使用すべきではありません。void
setBeanName
(StringSE name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。void
setCorsConfigurations
(MapSE<StringSE, CorsConfiguration> corsConfigurations) 「グローバル」CORS 構成マッピングを設定します。void
「グローバル」CORS 設定にCorsConfigurationSource
を設定します。void
setCorsProcessor
(CorsProcessor corsProcessor) 一致するCorsConfiguration
をリクエストに適用するために使用するカスタムCorsProcessor
を構成します。void
setDefaultHandler
(ObjectSE defaultHandler) このハンドラーマッピングのデフォルトハンドラーを設定します。void
setInterceptors
(ObjectSE... interceptors) このハンドラーマッピングによってマップされたすべてのハンドラーに適用するインターセプターを設定します。void
setOrder
(int order) この HandlerMapping Bean の順序値を指定します。void
setPathMatcher
(PathMatcher pathMatcher) 使用する PathMatcher を構成します。void
setPatternParser
(PathPatternParser patternParser) URL パスマッチングのためにpatterns
を解析するようにPathPatternParser
を設定します。void
setRemoveSemicolonContent
(boolean removeSemicolonContent) 使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)
の使用を推奨void
setUrlDecode
(boolean urlDecode) 使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)
の使用を推奨void
setUrlPathHelper
(UrlPathHelper urlPathHelper) ルックアップパスの解決に使用するように UrlPathHelper を構成します。boolean
クラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContext
フィールドの詳細
mappingsLogger
リクエストマッピング専用の「非表示」ロガー。
コンストラクターの詳細
AbstractHandlerMapping
public AbstractHandlerMapping()
メソッドの詳細
setDefaultHandler
このハンドラーマッピングのデフォルトハンドラーを設定します。特定のマッピングが見つからなかった場合、このハンドラーが返されます。デフォルトは
null
で、デフォルトのハンドラーがないことを示します。getDefaultHandler
このハンドラーマッピングのデフォルトハンドラーを返します。ない場合はnull
を返します。setPatternParser
URL パスマッチングのためにpatterns
を解析するようにPathPatternParser
を設定します。解析されたパターンは、AntPathMatcher
による文字列パスマッチングのよりモダンで効率的な代替手段を提供します。注意 : このプロパティは、以下のプロパティと相互に排他的です。これらはすべて、解析されたパターンには必要なく、
PathPatternParser
が使用可能な場合は無視されます。setAlwaysUseFullPath(boolean)
-- 解析されたパターンは常に完全なパスを使用し、サーブレットがパスプレフィックスによってマップされている場合にのみ servletPath を考慮します。setRemoveSemicolonContent(boolean)
-- 解析されたパターンは、パスマッチングの目的でセミコロンの内容を常に無視しますが、パスパラメーターは@MatrixVariable
を介してコントローラーで使用できます。setUrlDecode(boolean)
-- 解析されたパターンは、一度に 1 つのデコードされたパスセグメントに一致するため、完全なパスをデコードする必要はありません。setUrlPathHelper(org.springframework.web.util.UrlPathHelper)
-- 解析されたパターンの場合、リクエストパスはDispatcherServlet
またはServletRequestPathUtils
を使用してServletRequestPathFilter
で一度解析され、リクエスト属性にキャッシュされます。setPathMatcher(org.springframework.util.PathMatcher)
-- 解析されたパターンは、パスマッチングのロジックをカプセル化し、PathMatcher
を必要とします。
デフォルトでは、6.0 の時点で、これはデフォルト設定の
PathPatternParser
インスタンスに設定されているため、解析済みパターンの使用が有効になっています。これをnull
に設定すると、代わりにAntPathMatcher
による文字列パスマッチングに切り替わります。- パラメーター:
patternParser
- 使用するパーサー- 導入:
- 5.3
getPatternParser
configured
PathPatternParser
またはnull
を返します。それ以外の場合は、代わりにAntPathMatcher
との文字列パターンマッチングが有効になっていることを示します。- 導入:
- 5.3
setAlwaysUseFullPath
使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)
の使用を推奨構成されたUrlPathHelper
の同じプロパティへのショートカット。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)
が設定されている場合は無視されます。setUrlDecode
使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)
の使用を推奨基になるUrlPathHelper
の同じプロパティへのショートカット。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)
が設定されている場合は無視されます。setRemoveSemicolonContent
使用すべきではありません。6.0 現在、setUrlPathHelper(UrlPathHelper)
の使用を推奨基になるUrlPathHelper
の同じプロパティへのショートカット。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)
が設定されている場合は無視されます。setUrlPathHelper
ルックアップパスの解決に使用するように UrlPathHelper を構成します。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)
が設定されている場合は無視されます。getUrlPathHelper
configured
UrlPathHelper
を返します。setPathMatcher
使用する PathMatcher を構成します。注意 : このプロパティは相互に排他的であり、
setPatternParser(PathPatternParser)
が設定されている場合は無視されます。デフォルトでは、これは
AntPathMatcher
です。- 関連事項:
getPathMatcher
configured
PathMatcher
を返します。setInterceptors
このハンドラーマッピングによってマップされたすべてのハンドラーに適用するインターセプターを設定します。サポートされているインターセプター型は、
HandlerInterceptor
、WebRequestInterceptor
、MappedInterceptor
です。マップされたインターセプターは、パスパターンに一致するリクエスト URL にのみ適用されます。マップされたインターセプター Bean も、初期化中に型ごとに検出されます。- パラメーター:
interceptors
- ハンドラーインターセプターの配列- 関連事項:
getAdaptedInterceptors
HandlerInterceptor
に適合したすべての構成済みインターセプターを返します。- 戻り値:
- 構成されたインターセプターの配列、または構成されていない場合は
null
。このメソッドは、あまりにも早く呼び出された場合、またはより具体的にはApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)
の前に呼び出された場合にもnull
を返します。
getMappedInterceptors
構成されたすべてのMappedInterceptor
を配列として返します。- 戻り値:
MappedInterceptor
の配列。ない場合はnull
setCorsConfigurations
「グローバル」CORS 構成マッピングを設定します。最初に一致する URL パターンは、使用するCorsConfiguration
を決定し、次に、選択されたハンドラーのCorsConfiguration
でさらにcombined
になります。これは
setCorsConfigurationSource(CorsConfigurationSource)
と相互に排他的です。- 導入:
- 4.2
- 関連事項:
setCorsConfigurationSource
「グローバル」CORS 設定にCorsConfigurationSource
を設定します。ソースによって決定されたCorsConfiguration
は、選択されたハンドラーのCorsConfiguration
を持つcombined
です。これは
setCorsConfigurations(Map)
と相互に排他的です。- 導入:
- 5.1
- 関連事項:
getCorsConfigurationSource
configured
CorsConfigurationSource
がある場合は、それを返します。- 導入:
- 5.3
setCorsProcessor
一致するCorsConfiguration
をリクエストに適用するために使用するカスタムCorsProcessor
を構成します。デフォルトでは、
DefaultCorsProcessor
が使用されます。- 導入:
- 4.2
getCorsProcessor
設定されたCorsProcessor
を返します。setOrder
public void setOrder(int order) この HandlerMapping Bean の順序値を指定します。デフォルト値は
Ordered.LOWEST_PRECEDENCE
で、順序なしを意味します。- 関連事項:
getOrder
public int getOrder()インターフェースからコピーされた説明:Ordered
このオブジェクトの順序値を取得します。値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット
load-on-startup
の値に多少似ています)。同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
setBeanName
インターフェースからコピーされた説明:BeanNameAware
この Bean を作成した Bean ファクトリで Bean の名前を設定します。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()
またはカスタム init メソッドなどの init コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanNameAware
のsetBeanName
- パラメーター:
name
- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)
メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
formatMappingName
initApplicationContext
インターセプターを初期化します。- オーバーライド:
- クラス
ApplicationObjectSupport
のinitApplicationContext
- 例外:
ApplicationContextException
- 初期化エラーの場合BeansException
- ApplicationContext メソッドによってスローされた場合- 関連事項:
extendInterceptors
構成されたインターセプター(setInterceptors(java.lang.Object...)
を参照)を指定すると、サブクラスがオーバーライドして追加のインターセプターを登録できる拡張フック。initInterceptors()
が指定されたインターセプターをHandlerInterceptor
インスタンスに適応させる前に呼び出されます。デフォルトの実装は空です。
- パラメーター:
interceptors
- 構成されたインターセプターリスト(非null
)。既存のインターセプターの前後にインターセプターを追加できます
detectMappedInterceptors
型MappedInterceptor
の Bean を検出し、マッピングされたインターセプターのリストに追加します。これは、
setInterceptors(java.lang.Object...)
を介して提供されたすべてのMappedInterceptor
に加えて呼び出され、デフォルトで、現在のコンテキストとその祖先から型MappedInterceptor
のすべての Bean を追加します。サブクラスはこのポリシーをオーバーライドおよび調整できます。- パラメーター:
mappedInterceptors
- 追加する空のリスト
initInterceptors
protected void initInterceptors()WebRequestInterceptor
をHandlerInterceptor
に適応させる指定されたインターセプターを初期化します。adaptInterceptor
指定されたインターセプターオブジェクトをHandlerInterceptor
に適合させます。デフォルトでは、サポートされるインターセプター型は
HandlerInterceptor
およびWebRequestInterceptor
です。指定された各WebRequestInterceptor
はWebRequestHandlerInterceptorAdapter
でラップされます。- パラメーター:
interceptor
- インターセプター- 戻り値:
- インターセプターダウンキャストまたは HandlerInterceptor に適合
- 関連事項:
usesPathPatterns
public boolean usesPathPatterns()- 次で指定:
- インターフェース
HandlerMapping
のusesPathPatterns
getHandler
@Nullable public final HandlerExecutionChain getHandler(HttpServletRequestEE request) throws ExceptionSE 特定のリクエストのハンドラーを検索し、特定のハンドラーが見つからない場合はデフォルトのハンドラーにフォールバックします。- 次で指定:
- インターフェース
HandlerMapping
のgetHandler
- パラメーター:
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
リクエストのマッピングに使用するパスを初期化します。解析されたパターンが
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
このハンドラーに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 を更新します。プリフライトリクエストの場合、デフォルトの実装は、選択されたハンドラーを、構成された
setCorsProcessor(org.springframework.web.cors.CorsProcessor)
を呼び出す単純な HttpRequestHandler に置き換えます。実際のリクエストの場合、デフォルトの実装は、CORS 関連のチェックを行い、CORS ヘッダーを追加する HandlerInterceptor を挿入します。
- パラメーター:
request
- 現在のリクエストchain
- ハンドラーチェーンconfig
- 該当する CORS 設定 (おそらくnull
)- 導入:
- 4.2
setUrlPathHelper(UrlPathHelper)
の使用を推奨