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