クラス 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
のコンテナー。コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
boolean
Filter
EE は、残りの チェーンに委譲する前に、リクエストのMatchableHandlerMapping
およびCorsConfiguration
を積極的に検索し、結果をリクエスト属性にキャッシュし、チェーンが戻った後に復元します。getCorsConfiguration
(HttpServletRequestEE request) 受信リクエストに基づいてCorsConfiguration
を返します。構成または検出されたHandlerMapping
を返します。指定されたリクエストを処理するHandlerMapping
を見つけ、パスマッチングに使用するMatchableHandlerMapping
を返します。void
handlePreFlight
(HttpServletRequestEE request, HttpServletResponseEE response) リクエストに一致するHandlerMapping
を見つけ、それがPreFlightRequestHandler
として返すハンドラーを呼び出します。void
resetCache
(ServletRequestEE request, HandlerMappingIntrospector.CachedResult cachedResult) 以前のHandlerMappingIntrospector.CachedResult
を復元します。void
setApplicationContext
(ApplicationContext applicationContext) このオブジェクトが実行される ApplicationContext を設定します。setCache
(HttpServletRequestEE request) ルックアップを実行し、HandlerMappingIntrospector.CachedResult
をリクエスト属性として保存します。
コンストラクターの詳細
HandlerMappingIntrospector
public HandlerMappingIntrospector()
メソッドの詳細
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
Filter
EE は、残りの チェーンに委譲する前に、リクエストの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