クラス AbstractHandlerMethodMapping<T>
- 型パラメーター:
T- ハンドラーメソッドを受信リクエストに一致させるために必要な条件を含むHandlerMethodのマッピング。
- 実装されているすべてのインターフェース:
Aware, BeanNameAware, InitializingBean, ApplicationContextAware, Ordered, ServletContextAware, HandlerMapping
- 既知の直属サブクラス
RequestMappingInfoHandlerMapping
HandlerMethod の間のマッピングを定義する HandlerMapping 実装の抽象基本クラス。 登録された各ハンドラーメソッドについて、マッピング型 <T> の詳細を定義するサブクラスで一意のマッピングが維持されます。
- 導入:
- 3.1
- 作成者:
- Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller, Sam Brannen
フィールドのサマリー
クラス AbstractHandlerMapping から継承されたフィールド
mappingsLoggerクラス ApplicationObjectSupport から継承されたフィールド
loggerインターフェース HandlerMapping から継承されたフィールド
API_VERSION_ATTRIBUTE, 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インターフェース Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void初期化時にハンドラーメソッドを検出します。protected HandlerMethodcreateHandlerMethod(ObjectSE handler, MethodSE method) HandlerMethod インスタンスを作成します。protected voiddetectHandlerMethods(ObjectSE handler) 指定されたハンドラー Bean でハンドラーメソッドを探します。protected StringSE[]アプリケーションコンテキストで候補 Bean の名前を決定します。protected @Nullable CorsConfigurationgetCorsConfiguration(ObjectSE handler, jakarta.servlet.http.HttpServletRequest request) 指定されたハンドラーの CORS 構成を取得します。getDirectPaths(T mapping) パターンではないリクエストマッピングパスを返します。protected @Nullable HandlerMethodgetHandlerInternal(jakarta.servlet.http.HttpServletRequest request) 指定されたリクエストのハンドラーメソッドを検索します。すべてのマッピングと HandlerMethod を含む(読み取り専用)マップを返します。getHandlerMethodsForMappingName(StringSE mappingName) 指定されたマッピング名のハンドラーメソッドを返します。protected abstract ComparatorSE<T> getMappingComparator(jakarta.servlet.http.HttpServletRequest request) 一致するマッピングをソートするためのコンパレーターを返します。getMappingForMethod(MethodSE method, ClassSE<?> handlerType) ハンドラーメソッドのマッピングを提供します。getMatchingMapping(T mapping, jakarta.servlet.http.HttpServletRequest request) マッピングが現在のリクエストに一致するかどうかを確認し、現在のリクエストに関連する条件を含む(潜在的に新しい)マッピングを返します。構成された命名戦略またはnullを返します。protected voidhandleMatch(T mapping, StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) 一致するマッピングが見つかったときに呼び出されます。protected @Nullable HandlerMethodhandleNoMatch(SetSE<T> mappings, StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) 一致するマッピングが見つからないときに呼び出されます。protected voidhandlerMethodsInitialized(MapSE<T, HandlerMethod> handlerMethods) すべてのハンドラーメソッドが検出された後に呼び出されます。protected booleanhasCorsConfigurationSource(ObjectSE handler) このハンドラーにCorsConfigurationSourceがある場合、trueを返します。protected @Nullable CorsConfigurationinitCorsConfiguration(ObjectSE handler, MethodSE method, T mapping) マッピングの CORS 設定を抽出して返します。protected voidApplicationContext で Bean をスキャンし、ハンドラーメソッドを検出して登録します。protected abstract boolean指定された型がハンドラーメソッドを持つハンドラーかどうか。protected @Nullable HandlerMethodlookupHandlerMethod(StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) 現在のリクエストに最適なハンドラーメソッドを検索します。protected voidprocessCandidateBean(StringSE beanName) 指定された候補 Bean の型を判別し、ハンドラー型として識別された場合はdetectHandlerMethods(Object)を呼び出します。protected voidregisterHandlerMethod(ObjectSE handler, MethodSE method, T mapping) ハンドラーメソッドとその一意のマッピングを登録します。voidregisterMapping(T mapping, ObjectSE handler, MethodSE method) 指定されたマッピングを登録します。voidsetDetectHandlerMethodsInAncestorContexts(boolean detectHandlerMethodsInAncestorContexts) 祖先 ApplicationContexts の Bean でハンドラーメソッドを検出するかどうか。voidsetHandlerMethodMappingNamingStrategy(HandlerMethodMappingNamingStrategy<T> namingStrategy) マップされたすべてのハンドラーメソッドにデフォルト名を割り当てるために使用する命名戦略を構成します。voidsetPatternParser(@Nullable PathPatternParser patternParser) URL パスマッチングのためにpatternsを解析するようにPathPatternParserを設定します。voidunregisterMapping(T mapping) 指定されたマッピングを登録解除します。クラス AbstractHandlerMapping から継承されたメソッド
adaptInterceptor, detectMappedInterceptors, extendInterceptors, formatMappingName, getAdaptedInterceptors, getApiVersionStrategy, getCorsConfigurationSource, getCorsHandlerExecutionChain, getCorsProcessor, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getPatternParser, getUrlPathHelper, initApplicationContext, initInterceptors, initLookupPath, setAlwaysUseFullPath, setApiVersionStrategy, setBeanName, setCorsConfigurations, setCorsConfigurationSource, setCorsProcessor, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setRemoveSemicolonContent, setUrlDecode, setUrlPathHelper, usesPathPatternsクラス WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
コンストラクターの詳細
AbstractHandlerMethodMapping
public AbstractHandlerMethodMapping()
メソッドの詳細
setPatternParser
クラスからコピーされた説明:AbstractHandlerMappingURL パスマッチングのためにpatternsを解析するようにPathPatternParserを設定します。解析されたパターンは、AntPathMatcherによる文字列パスマッチングのよりモダンで効率的な代替手段を提供します。注意 : このプロパティは、以下のプロパティと相互に排他的です。これらはすべて、解析されたパターンには必要なく、
PathPatternParserが使用可能な場合は無視されます。AbstractHandlerMapping.setAlwaysUseFullPath(boolean)-- 解析されたパターンは常に完全なパスを使用し、サーブレットがパスプレフィックスによってマップされている場合にのみ servletPath を考慮します。AbstractHandlerMapping.setRemoveSemicolonContent(boolean)-- 解析されたパターンは、パスマッチングの目的でセミコロンの内容を常に無視しますが、パスパラメーターは@MatrixVariableを介してコントローラーで使用できます。AbstractHandlerMapping.setUrlDecode(boolean)-- 解析されたパターンは、一度に 1 つのデコードされたパスセグメントに一致するため、完全なパスをデコードする必要はありません。AbstractHandlerMapping.setUrlPathHelper(UrlPathHelper)-- 解析されたパターンの場合、リクエストパスはDispatcherServletまたはServletRequestPathUtilsを使用してServletRequestPathFilterで一度解析され、リクエスト属性にキャッシュされます。AbstractHandlerMapping.setPathMatcher(PathMatcher)-- 解析されたパターンは、パスマッチングのロジックをカプセル化し、PathMatcherを必要とします。
デフォルトでは、6.0 の時点で、これはデフォルト設定の
PathPatternParserインスタンスに設定されているため、解析済みパターンの使用が有効になっています。これをnullに設定すると、代わりにAntPathMatcherによる文字列パスマッチングに切り替わります。- オーバーライド:
- クラス
AbstractHandlerMappingのsetPatternParser - パラメーター:
patternParser- 使用するパーサー
setDetectHandlerMethodsInAncestorContexts
public void setDetectHandlerMethodsInAncestorContexts(boolean detectHandlerMethodsInAncestorContexts) 祖先 ApplicationContexts の Bean でハンドラーメソッドを検出するかどうか。デフォルトは「false」: 現在の ApplicationContext の Bean のみが考慮されます。つまり、この HandlerMapping 自体が定義されているコンテキスト(通常、現在の DispatcherServlet のコンテキスト)のみが考慮されます。
このフラグをオンにして、祖先コンテキスト(通常は Spring ルート WebApplicationContext)のハンドラー Bean も検出します。
- 関連事項:
setHandlerMethodMappingNamingStrategy
public void setHandlerMethodMappingNamingStrategy(HandlerMethodMappingNamingStrategy<T> namingStrategy) マップされたすべてのハンドラーメソッドにデフォルト名を割り当てるために使用する命名戦略を構成します。デフォルトの命名戦略は、クラス名の大文字の後に "#"、メソッド名が続くというものです。たとえば、メソッド getFoo を持つクラス TestController の場合は "TC#getFoo" になります。
getNamingStrategy
構成された命名戦略またはnullを返します。getHandlerMethods
すべてのマッピングと HandlerMethod を含む(読み取り専用)マップを返します。getHandlerMethodsForMappingName
指定されたマッピング名のハンドラーメソッドを返します。- パラメーター:
mappingName- マッピング名- 戻り値:
- 一致する HandlerMethod または
nullのリスト。返されたリストは変更されることはなく、反復しても安全です。 - 関連事項:
registerMapping
unregisterMapping
指定されたマッピングを登録解除します。このメソッドは、初期化が完了した後、実行時に呼び出すことができます。
- パラメーター:
mapping- 登録解除するマッピング
afterPropertiesSet
public void afterPropertiesSet()初期化時にハンドラーメソッドを検出します。- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 関連事項:
initHandlerMethods
protected void initHandlerMethods()ApplicationContext で Bean をスキャンし、ハンドラーメソッドを検出して登録します。- 関連事項:
getCandidateBeanNames
processCandidateBean
指定された候補 Bean の型を判別し、ハンドラー型として識別された場合はdetectHandlerMethods(Object)を呼び出します。この実装は、
BeanFactory.getType(String)をチェックし、Bean 名でdetectHandlerMethods(Object)を呼び出すことにより、Bean の作成を回避します。- パラメーター:
beanName- 候補者 Bean の名前- 導入:
- 5.1
- 関連事項:
detectHandlerMethods
指定されたハンドラー Bean でハンドラーメソッドを探します。- パラメーター:
handler- Bean 名または実際のハンドラーインスタンス- 関連事項:
registerHandlerMethod
ハンドラーメソッドとその一意のマッピングを登録します。検出された各ハンドラーメソッドに対して起動時に呼び出されます。- パラメーター:
handler- ハンドラーまたはハンドラーインスタンスの Bean 名method- 登録する方法mapping- ハンドラーメソッドに関連付けられたマッピング条件- 例外:
IllegalStateExceptionSE- 別のメソッドが同じマッピングですでに登録されている場合
createHandlerMethod
HandlerMethod インスタンスを作成します。- パラメーター:
handler- Bean 名または実際のハンドラーインスタンスmethod- ターゲットメソッド- 戻り値:
- 作成された HandlerMethod
initCorsConfiguration
protected @Nullable CorsConfiguration initCorsConfiguration(ObjectSE handler, MethodSE method, T mapping) マッピングの CORS 設定を抽出して返します。handlerMethodsInitialized
すべてのハンドラーメソッドが検出された後に呼び出されます。- パラメーター:
handlerMethods- ハンドラーメソッドとマッピングを含む読み取り専用マップ。
getHandlerInternal
protected @Nullable HandlerMethod getHandlerInternal(jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 指定されたリクエストのハンドラーメソッドを検索します。- 次で指定:
- クラス
AbstractHandlerMappingのgetHandlerInternal - パラメーター:
request- 現在の HTTP リクエスト- 戻り値:
- 対応するハンドラーインスタンス。見つからない場合は
null - 例外:
ExceptionSE- 内部エラーがある場合
lookupHandlerMethod
protected @Nullable HandlerMethod lookupHandlerMethod(StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 現在のリクエストに最も一致するハンドラーメソッドを検索します。複数の一致が見つかった場合、最適な一致が選択されます。- パラメーター:
lookupPath- 現在のサーブレットマッピング内のマッピングルックアップパスrequest- 現在のリクエスト- 戻り値:
- 最適なハンドラーメソッド、または一致しない場合は
null - 例外:
ExceptionSE- 関連事項:
handleMatch
handleNoMatch
protected @Nullable HandlerMethod handleNoMatch(SetSE<T> mappings, StringSE lookupPath, jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 一致するマッピングが見つからないときに呼び出されます。- パラメーター:
mappings- 登録済みのすべてのマッピングlookupPath- 現在のサーブレットマッピング内のマッピングルックアップパスrequest- 現在のリクエスト- 例外:
jakarta.servlet.ServletException- エラーの場合ExceptionSE
hasCorsConfigurationSource
クラスからコピーされた説明:AbstractHandlerMappingこのハンドラーにCorsConfigurationSourceがある場合、trueを返します。- オーバーライド:
- クラス
AbstractHandlerMappingのhasCorsConfigurationSource
getCorsConfiguration
protected @Nullable CorsConfiguration getCorsConfiguration(ObjectSE handler, jakarta.servlet.http.HttpServletRequest request) クラスからコピーされた説明:AbstractHandlerMapping指定されたハンドラーの CORS 構成を取得します。- オーバーライド:
- クラス
AbstractHandlerMappingのgetCorsConfiguration - パラメーター:
handler- チェックするハンドラー(非null)。request- 現在のリクエスト。- 戻り値:
- ハンドラーの CORS 構成、ない場合は
null
isHandler
指定された型がハンドラーメソッドを持つハンドラーかどうか。- パラメーター:
beanType- チェックされている Bean の型- 戻り値:
- これがハンドラー型の場合は "true"、そうでない場合は "false"。
getMappingForMethod
getDirectPaths
getMatchingMapping
getMappingComparator
protected abstract ComparatorSE<T> getMappingComparator(jakarta.servlet.http.HttpServletRequest request) 一致するマッピングをソートするためのコンパレータを返します。返されたコンパレータは、「より良い」一致をより高い順に並べ替えます。- パラメーター:
request- 現在のリクエスト- 戻り値:
- コンパレータ (非
null)