public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport implements HandlerMapping, Ordered, BeanNameAware
HandlerMapping 実装の抽象基本クラス。順序付け、デフォルトハンドラー、パスパターンによってマッピングされたハンドラーインターセプタを含むハンドラーインターセプタをサポートします。 メモ: この基本クラスは、HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE の公開をサポートしていません。この属性のサポートは、通常リクエスト URL マッピングに基づいた具象サブクラスまでです。
getHandlerInternal(javax.servlet.http.HttpServletRequest), setDefaultHandler(java.lang.Object), setInterceptors(java.lang.Object...), HandlerInterceptor| 修飾子と型 | フィールドと説明 |
|---|---|
protected Log | mappingsLogger リクエストマッピング専用の「非表示」ロガー。 |
loggerBEST_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_ATTRIBUTEHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| コンストラクターと説明 |
|---|
AbstractHandlerMapping() |
| 修飾子と型 | メソッドと説明 |
|---|---|
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 | formatMappingName() |
protected HandlerInterceptor[] | getAdaptedInterceptors() 適応インターセプターを HandlerInterceptor 配列として返します。 |
protected CorsConfiguration | getCorsConfiguration(ObjectSE handler, HttpServletRequestEE request) 指定されたハンドラーの CORS 構成を取得します。 |
CorsConfigurationSource | getCorsConfigurationSource()configured CorsConfigurationSource がある場合は、それを返します。 |
protected HandlerExecutionChain | getCorsHandlerExecutionChain(HttpServletRequestEE request, HandlerExecutionChain chain, CorsConfiguration config)CORS 関連の処理のために HandlerExecutionChain を更新します。 |
CorsProcessor | getCorsProcessor() 設定された CorsProcessor を返します。 |
ObjectSE | getDefaultHandler() このハンドラーマッピングのデフォルトハンドラーを返します。ない場合は null を返します。 |
HandlerExecutionChain | getHandler(HttpServletRequestEE request) 特定のリクエストのハンドラーを検索し、特定のハンドラーが見つからない場合はデフォルトのハンドラーにフォールバックします。 |
protected HandlerExecutionChain | getHandlerExecutionChain(ObjectSE handler, HttpServletRequestEE request) 該当するインターセプターを含む、指定されたハンドラー用の HandlerExecutionChain を作成します。 |
protected abstract ObjectSE | getHandlerInternal(HttpServletRequestEE request) 特定のリクエストのハンドラーを検索し、特定のリクエストが見つからない場合は null を返します。 |
protected MappedInterceptor[] | getMappedInterceptors() 構成されたすべての MappedInterceptor を配列として返します。 |
int | getOrder() このオブジェクトの順序値を取得します。 |
PathMatcher | getPathMatcher()configured PathMatcher を返します。 |
PathPatternParser | getPatternParser() |
UrlPathHelper | getUrlPathHelper()configured UrlPathHelper を返します。 |
protected boolean | hasCorsConfigurationSource(ObjectSE handler) このハンドラーに CorsConfigurationSource がある場合、true を返します。 |
protected void | initApplicationContext() インターセプターを初期化します。 |
protected void | initInterceptors()WebRequestInterceptor を HandlerInterceptor に適応させる指定されたインターセプターを初期化します。 |
protected StringSE | initLookupPath(HttpServletRequestEE request) リクエストのマッピングに使用するパスを初期化します。 |
void | setAlwaysUseFullPath(boolean alwaysUseFullPath) 構成された UrlPathHelper の同じプロパティへのショートカット。 |
void | setBeanName(StringSE name) この Bean を作成した Bean ファクトリで Bean の名前を設定します。 |
void | setCorsConfigurations(MapSE<StringSE, CorsConfiguration> corsConfigurations)「グローバル」CORS 構成マッピングを設定します。 |
void | setCorsConfigurationSource(CorsConfigurationSource source)「グローバル」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)AntPathMatcher との文字列パターンマッチングの代わりに、事前に解析された PathPattern の使用を有効にします。 |
void | setRemoveSemicolonContent(boolean removeSemicolonContent) 基になる UrlPathHelper の同じプロパティへのショートカット。 |
void | setUrlDecode(boolean urlDecode) 基になる UrlPathHelper の同じプロパティへのショートカット。 |
void | setUrlPathHelper(UrlPathHelper urlPathHelper) ルックアップパスの解決に使用するように UrlPathHelper を構成します。 |
boolean | usesPathPatterns() |
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextgetApplicationContext, getMessageSourceAccessor, obtainApplicationContext, requiredContextClass, setApplicationContextcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected final Log mappingsLogger
public void setDefaultHandler(@Nullable ObjectSE defaultHandler)
デフォルトは null で、デフォルトのハンドラーがないことを示します。
@Nullable public ObjectSE getDefaultHandler()
null を返します。public void setPatternParser(PathPatternParser patternParser)
AntPathMatcher との文字列パターンマッチングの代わりに、事前に解析された PathPattern の使用を有効にします。構文はほぼ同じですが、PathPattern 構文は Web アプリケーション向けに調整されており、その実装はより効率的です。このプロパティは、これが設定されている場合は事実上無視される次の他のプロパティと相互に排他的です。
setAlwaysUseFullPath(boolean) -- PathPatterns は常に完全なパスを使用し、デコードされ部分的に正規化されているため requestURIEE と比較できない servletPath/pathInfo を無視します。setRemoveSemicolonContent(boolean) -- PathPatterns は、パスマッチングの目的で常にセミコロンの内容を無視しますが、パスパラメーターは @MatrixVariable を介してコントローラーで使用できます。setUrlDecode(boolean) -- PathPatterns は、一度に 1 つのデコードされたパスセグメントに一致し、デコードされた予約文字が原因で課題を引き起こす可能性のある完全なデコードされたパスを必要としません。setUrlPathHelper(org.springframework.web.util.UrlPathHelper) -- リクエストパスは、DispatcherServlet または ServletRequestPathUtils を使用する ServletRequestPathFilter によってグローバルに事前解析され、再利用のためにリクエスト属性に保存されます。setPathMatcher(org.springframework.util.PathMatcher) -- パターンは PathPatterns に解析され、PathMatcher との文字列照合の代わりに使用されます。デフォルトでは、これは設定されていません。
patternParser - 使用するパーサー @Nullable public PathPatternParser getPatternParser()
public void setAlwaysUseFullPath(boolean alwaysUseFullPath)
UrlPathHelper の同じプロパティへのショートカット。 注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。
public void setUrlDecode(boolean urlDecode)
UrlPathHelper の同じプロパティへのショートカット。 注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。
public void setRemoveSemicolonContent(boolean removeSemicolonContent)
UrlPathHelper の同じプロパティへのショートカット。 注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。
public void setUrlPathHelper(UrlPathHelper urlPathHelper)
注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。
public UrlPathHelper getUrlPathHelper()
configured UrlPathHelper を返します。public void setPathMatcher(PathMatcher pathMatcher)
注意 : このプロパティは相互に排他的であり、setPatternParser(PathPatternParser) が設定されている場合は無視されます。
デフォルトでは、これは AntPathMatcher です。
AntPathMatcherpublic PathMatcher getPathMatcher()
configured PathMatcher を返します。public void setInterceptors(ObjectSE... interceptors)
サポートされているインターセプター型は、HandlerInterceptor、WebRequestInterceptor、MappedInterceptor です。マップされたインターセプターは、パスパターンに一致するリクエスト URL にのみ適用されます。マップされたインターセプター Bean も、初期化中に型ごとに検出されます。
interceptors - ハンドラーインターセプターの配列 adaptInterceptor(java.lang.Object), HandlerInterceptor, WebRequestInterceptor, MappedInterceptorpublic void setCorsConfigurations(MapSE<StringSE,CorsConfiguration> corsConfigurations)
CorsConfiguration を決定し、次に、選択されたハンドラーの CorsConfiguration でさらに combined になります。 これは setCorsConfigurationSource(CorsConfigurationSource) との相互独占です。
setCorsProcessor(CorsProcessor)public void setCorsConfigurationSource(CorsConfigurationSource source)
CorsConfigurationSource を設定します。ソースによって決定された CorsConfiguration は、選択されたハンドラーの CorsConfiguration を持つ combined です。 これは setCorsConfigurations(Map) との相互独占です。
setCorsProcessor(CorsProcessor)@Nullable public CorsConfigurationSource getCorsConfigurationSource()
configured CorsConfigurationSource がある場合は、それを返します。public void setCorsProcessor(CorsProcessor corsProcessor)
CorsConfiguration をリクエストに適用するために使用するカスタム CorsProcessor を構成します。 デフォルトでは、DefaultCorsProcessor が使用されます。
public CorsProcessor getCorsProcessor()
CorsProcessor を返します。public void setOrder(int order)
デフォルト値は Ordered.LOWEST_PRECEDENCE で、順序なしを意味します。
Ordered.getOrder()public int getOrder()
Ordered 値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered の getOrder Ordered.HIGHEST_PRECEDENCE, Ordered.LOWEST_PRECEDENCEpublic void setBeanName(StringSE name)
BeanNameAware 通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。
BeanNameAware の setBeanName name - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。protected StringSE formatMappingName()
protected void initApplicationContext()
throws BeansExceptionApplicationObjectSupport の initApplicationContext ApplicationContextException - 初期化エラーの場合 BeansException - ApplicationContext メソッドによってスローされた場合 extendInterceptors(java.util.List), initInterceptors()protected void extendInterceptors(ListSE<ObjectSE> interceptors)
setInterceptors(java.lang.Object...) を参照)を指定すると、サブクラスがオーバーライドして追加のインターセプターを登録できる拡張フック。initInterceptors() が指定されたインターセプターを HandlerInterceptor インスタンスに適応させる前に呼び出されます。
デフォルトの実装は空です。
interceptors - 構成されたインターセプターリスト(非 null)。既存のインターセプターの前後にインターセプターを追加できます protected void detectMappedInterceptors(ListSE<HandlerInterceptor> mappedInterceptors)
MappedInterceptor の Bean を検出し、マッピングされたインターセプターのリストに追加します。 これは、setInterceptors(java.lang.Object...) を介して提供されたすべての MappedInterceptor に加えて呼び出され、デフォルトで、現在のコンテキストとその祖先から型 MappedInterceptor のすべての Bean を追加します。サブクラスはこのポリシーをオーバーライドおよび調整できます。
mappedInterceptors - 追加する空のリスト protected void initInterceptors()
WebRequestInterceptor を HandlerInterceptor に適応させる指定されたインターセプターを初期化します。protected HandlerInterceptor adaptInterceptor(ObjectSE interceptor)
HandlerInterceptor に適合させます。 デフォルトでは、サポートされるインターセプター型は HandlerInterceptor および WebRequestInterceptor です。指定された各 WebRequestInterceptor は WebRequestHandlerInterceptorAdapter でラップされます。
interceptor - インターセプター HandlerInterceptor, WebRequestInterceptor, WebRequestHandlerInterceptorAdapter@Nullable protected final HandlerInterceptor[] getAdaptedInterceptors()
HandlerInterceptor 配列として返します。HandlerInterceptor の配列。ない場合は null @Nullable protected final MappedInterceptor[] getMappedInterceptors()
MappedInterceptor を配列として返します。MappedInterceptor の配列。ない場合は null public boolean usesPathPatterns()
HandlerMapping の usesPathPatterns @Nullable public final HandlerExecutionChain getHandler(HttpServletRequestEE request) throws ExceptionSE
HandlerMapping の getHandler request - 現在の HTTP リクエスト ExceptionSE - 内部エラーがある場合 getHandlerInternal(javax.servlet.http.HttpServletRequest)@Nullable protected abstract ObjectSE getHandlerInternal(HttpServletRequestEE request) throws ExceptionSE
null を返します。このメソッドは getHandler(javax.servlet.http.HttpServletRequest) によって呼び出されます。null の戻り値は、デフォルトのハンドラー(設定されている場合)につながります。CORS プリフライトリクエストでは、このメソッドはプリフライトリクエストではなく、URL パス、"Access-Control-Request-Method" ヘッダーからの HTTP メソッド、ヘッダーに基づいて予想される実際のリクエストに対して一致を返す必要があります "Access-Control-Request-Headers" ヘッダーから、getCorsConfiguration(Object, HttpServletRequest) を介して CORS 設定を取得できるようにします。
メモ: このメソッドは、ハンドラーオブジェクトと動的に決定されたインターセプターを組み合わせて、事前に構築された HandlerExecutionChain を返すこともあります。静的に指定されたインターセプターは、そのような既存のチェーンにマージされます。
request - 現在の HTTP リクエスト null ExceptionSE - 内部エラーがある場合 protected StringSE initLookupPath(HttpServletRequestEE request)
解析されたパターンが enabled の場合、解析された RequestPath は、DispatcherServlet または ServletRequestPathFilter によって外部的に parsed であると予想されます。
それ以外の場合、PathMatcher を介した文字列パターンマッチングの場合、このメソッドによるパスは resolved です。
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 リクエスト null)getAdaptedInterceptors()protected boolean hasCorsConfigurationSource(ObjectSE handler)
CorsConfigurationSource がある場合、true を返します。@Nullable protected CorsConfiguration getCorsConfiguration(ObjectSE handler, HttpServletRequestEE request)
handler - チェックするハンドラー(非 null)。request - 現在のリクエスト。null protected HandlerExecutionChain getCorsHandlerExecutionChain(HttpServletRequestEE request, HandlerExecutionChain chain, @Nullable CorsConfiguration config)
プリフライトリクエストの場合、デフォルトの実装は、選択されたハンドラーを、構成された setCorsProcessor(org.springframework.web.cors.CorsProcessor) を呼び出す単純な HttpRequestHandler に置き換えます。
実際のリクエストの場合、デフォルトの実装は、CORS 関連のチェックを行い、CORS ヘッダーを追加する HandlerInterceptor を挿入します。
request - 現在のリクエスト chain - ハンドラーチェーン config - 該当する CORS 設定 (おそらく null)