クラス HandlerMappingIntrospector
- 実装されているすべてのインターフェース:
Aware, InitializingBean, ApplicationContextAware, CorsConfigurationSource, PreFlightRequestHandler
HandlerMapping から情報を取得するヘルパークラス。次のメソッドを提供します。
getMatchableHandlerMapping(HttpServletRequest)—HandlerMappingを取得して、リクエストの一致条件をチェックします。getCorsConfiguration(HttpServletRequest)— リクエストの CORS 設定を取得します。
これは主に、セキュリティ上の課題を回避するために、Spring Security がそのパターンマッチングを、特定のリクエストに対して Spring MVC で使用されるのと同じパターンマッチングと一致させるための SPI であることに注意してください。
このコンポーネントを使用すると、リクエストのマッピングによるパフォーマンスのオーバーヘッドが発生するため、リクエストごとに複数回繰り返すべきではありません。createCacheFilter() は結果をキャッシュするフィルターを公開します。Spring Security に依存するアプリケーションは、Spring Security がこのフィルターをデプロイするため、このフィルターをデプロイする必要はありません。ただし、このコンポーネントを使用する Spring Security の代わりに使用される他のカスタムセキュリティ層は、メソッドの Javadoc に記載されている要件に従ってキャッシュフィルターをデプロイする必要があります。
- 導入:
- 4.3.1
- 作成者:
- Rossen Stoyanchev
ネストされたクラスの要約
ネストされたクラス修飾子と型クラス説明static final class非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。ディスパッチャー型と requestURI に一致する特定のリクエストのMatchableHandlerMappingおよびCorsConfigurationのコンテナー。コンストラクターの概要
コンストラクター方法の概要
修飾子と型メソッド説明void非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。boolean非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。jakarta.servlet.Filter非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。Filterは、残りの チェーンに委譲する前に、リクエストのMatchableHandlerMappingとCorsConfigurationを積極的に検索し、結果をリクエスト属性にキャッシュして、チェーンが戻った後にそれを復元します。getCorsConfiguration(jakarta.servlet.http.HttpServletRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。受信リクエストに基づいてCorsConfigurationを返します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。構成または検出されたHandlerMappingを返します。getMatchableHandlerMapping(jakarta.servlet.http.HttpServletRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。指定されたリクエストを処理するHandlerMappingを見つけ、パスマッチングに使用するMatchableHandlerMappingを返します。int非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。セキュリティパターンに設定された制限をキャッシュに返します。voidhandlePreFlight(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。リクエストに一致するHandlerMappingを見つけ、それがPreFlightRequestHandlerとして返すハンドラーを呼び出します。voidresetCache(jakarta.servlet.ServletRequest request, @Nullable HandlerMappingIntrospector.CachedResult cachedResult) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。以前のHandlerMappingIntrospector.CachedResultを復元します。voidsetApplicationContext(ApplicationContext applicationContext) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。このオブジェクトが実行される ApplicationContext を設定します。setCache(jakarta.servlet.http.HttpServletRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。ルックアップを実行し、HandlerMappingIntrospector.CachedResultをリクエスト属性として保存します。voidsetPatternCacheLimit(int patternCacheLimit) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。実行時にMatchableHandlerMapping.match(HttpServletRequest, String)に渡されてキャッシュされるセキュリティパターンの最大数に制限を設定します。
コンストラクターの詳細
HandlerMappingIntrospector
public HandlerMappingIntrospector()非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
メソッドの詳細
setPatternCacheLimit
public void setPatternCacheLimit(int patternCacheLimit) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。実行時にMatchableHandlerMapping.match(HttpServletRequest, String)に渡されてキャッシュされるセキュリティパターンの最大数に制限を設定します。デフォルトでは 2048 に設定されています。
- パラメーター:
patternCacheLimit- 使用制限- 導入:
- 6.2.8
getPatternCacheLimit
public int getPatternCacheLimit()非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。セキュリティパターンに設定された制限をキャッシュに返します。- 導入:
- 6.2.8
setApplicationContext
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。インターフェースからコピーされた説明:ApplicationContextAwareこのオブジェクトが実行される ApplicationContext を設定します。通常、この呼び出しはオブジェクトの初期化に使用されます。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init メソッドなどの init コールバックの前に呼び出されます。ResourceLoaderAware.setResourceLoader(ResourceLoader)、ApplicationEventPublisherAware.setApplicationEventPublisher(ApplicationEventPublisher)およびMessageSourceAwareの後に呼び出されます(該当する場合)。- 次で指定:
- インターフェース
ApplicationContextAwareのsetApplicationContext - パラメーター:
applicationContext- このオブジェクトによって使用される ApplicationContext オブジェクト- 関連事項:
afterPropertiesSet
public void afterPropertiesSet()非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet
getHandlerMappings
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。構成または検出されたHandlerMappingを返します。allHandlerMappingsUsePathPatternParser
public boolean allHandlerMappingsUsePathPatternParser()非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。- 導入:
- 6.2
handlePreFlight
public void handlePreFlight(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。リクエストに一致するHandlerMappingを見つけ、それがPreFlightRequestHandlerとして返すハンドラーを呼び出します。- 次で指定:
- インターフェース
PreFlightRequestHandlerのhandlePreFlight - パラメーター:
request- 現在の HTTP リクエストresponse- 現在の HTTP レスポンス- 例外:
NoHandlerFoundException- リクエストに一致するハンドラーがない場合ExceptionSE- 導入:
- 6.2
createCacheFilter
public jakarta.servlet.Filter createCacheFilter()非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。Filterは、残りの チェーンに委譲する前に、リクエストのMatchableHandlerMappingとCorsConfigurationを積極的に検索し、結果をリクエスト属性にキャッシュして、チェーンが戻った後にそれを復元します。注意 : Spring Security に依存するアプリケーションは、このコンポーネントを直接使用しないため、フィルターをデプロイせず、代わりに Spring Security にフィルターを許可する必要があります。Spring Security の代わりに
HandlerMappingIntrospectorに依存する他のカスタムセキュリティ層は、ルックアップが実行される他のフィルターよりも先にこのフィルターをデプロイする必要があり、またフィルターがすべてのディスパッチャー型を処理するように構成されていることを確認する必要があります。- 戻り値:
- 使用するフィルターインスタンス
- 導入:
- 6.0.14
setCache
public @Nullable HandlerMappingIntrospector.CachedResult setCache(jakarta.servlet.http.HttpServletRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。ルックアップを実行し、HandlerMappingIntrospector.CachedResultをリクエスト属性として保存します。このメソッドは、その後のgetMatchableHandlerMapping(HttpServletRequest)およびgetCorsConfiguration(HttpServletRequest)の呼び出しの前にフィルターから呼び出して、検索の繰り返しを避けることができます。- パラメーター:
request- 現在のリクエスト- 戻り値:
- 以前の
HandlerMappingIntrospector.CachedResult(親ディスパッチからのものがある場合) - 導入:
- 6.0.14
resetCache
public void resetCache(jakarta.servlet.ServletRequest request, @Nullable HandlerMappingIntrospector.CachedResult cachedResult) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。以前のHandlerMappingIntrospector.CachedResultを復元します。このメソッドは、チェーンの残りの部分に委譲した後、フィルターから呼び出すことができます。- 導入:
- 6.0.14
getMatchableHandlerMapping
public @Nullable MatchableHandlerMapping getMatchableHandlerMapping(jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。指定されたリクエストを処理するHandlerMappingを見つけ、パスマッチングに使用するMatchableHandlerMappingを返します。- パラメーター:
request- 現在のリクエスト- 戻り値:
- 解決された
MatchableHandlerMappingまたはnull - 例外:
IllegalStateExceptionSE- 一致する HandlerMapping がMatchableHandlerMappingのインスタンスでない場合ExceptionSE- HandlerMapping のいずれかで例外が発生した場合
getCorsConfiguration
public @Nullable CorsConfiguration getCorsConfiguration(jakarta.servlet.http.HttpServletRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。インターフェースからコピーされた説明:CorsConfigurationSource受信リクエストに基づいてCorsConfigurationを返します。- 次で指定:
- インターフェース
CorsConfigurationSourceのgetCorsConfiguration - 戻り値:
- 関連する
CorsConfiguration、または存在しない場合はnull
PathPatternParserのみを使用することをお勧めします。allHandlerMappingsUsePathPatternParser()が true を返す場合は、それを使用すればハンドラーマッピングと一致させることができます。