クラス DelegatingFilterProxy
- 実装されたすべてのインターフェース:
FilterEE
、Aware
、BeanNameAware
、DisposableBean
、InitializingBean
、EnvironmentAware
、EnvironmentCapable
、ServletContextAware
web.xml
で "targetBeanName" フィルター init-param をサポートし、Spring アプリケーションコンテキスト内のターゲット Bean の名前を指定します。web.xml
は通常 DelegatingFilterProxy
定義を含み、指定された filter-name
は Spring のルートアプリケーションコンテキストの Bean 名に対応します。フィルタープロキシへのすべての呼び出しは、Spring コンテキストでその Bean に委譲されます。これは、標準のサーブレットフィルターインターフェースを実装するために必要です。
このアプローチは、複雑な設定が必要な Filter 実装に特に役立ち、完全な Spring Bean 定義機構を Filter インスタンスに適用できます。または、Spring ルートアプリケーションコンテキストからのサービス Bean のルックアップと組み合わせて、標準のフィルター設定を検討してください。
注 : サーブレットフィルターインターフェースによって定義されたライフサイクルメソッドは、デフォルトではターゲット Bean に委譲されず、Spring アプリケーションコンテキストに依存してその Bean のライフサイクルを管理します。"targetFilterLifecycle" フィルターの init-param を "true" に指定すると、ターゲット Bean で Filter.init(jakarta.servlet.FilterConfig)
および Filter.destroy()
EE ライフサイクルメソッドが強制的に呼び出され、サーブレットコンテナーがフィルターライフサイクルを管理できるようになります。
DelegatingFilterProxy
は、通常、Spring の WebApplicationInitializer
SPI と組み合わせて、サーブレットコンテナーのインスタンスベースのフィルター登録メソッドを使用するときに、オプションでコンストラクターパラメーターを受け入れることができます。これらのコンストラクターを使用すると、委譲フィルター Bean を直接提供するか、取得するアプリケーションコンテキストと Bean 名を提供して、ServletContext からアプリケーションコンテキストをルックアップする必要がなくなります。
このクラスは、元々、Ben Alex によって書かれた Spring Security の FilterToBeanProxy
クラスに触発されました。
- 導入:
- 1.2
- 作成者:
- Juergen Hoeller, Sam Brannen, Chris Beams
- 関連事項:
setTargetBeanName(java.lang.String)
setTargetFilterLifecycle(boolean)
Filter.doFilter(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse, jakarta.servlet.FilterChain)
Filter.init(jakarta.servlet.FilterConfig)
Filter.destroy()
EEDelegatingFilterProxy(Filter)
DelegatingFilterProxy(String)
DelegatingFilterProxy(String, WebApplicationContext)
ServletContext.addFilter(String, Filter)
EEWebApplicationInitializer
フィールドサマリー
クラス org.springframework.web.filter.GenericFilterBean から継承されたフィールド
logger
コンストラクターのサマリー
コンストラクター説明新しいDelegatingFilterProxy
を作成します。DelegatingFilterProxy
(FilterEE delegate) 指定されたFilter
EE デリゲートで新しいDelegatingFilterProxy
を作成します。DelegatingFilterProxy
(StringSE targetBeanName) ServletContext
にある SpringWebApplicationContext
(「ルート」アプリケーションコンテキストまたはsetContextAttribute(java.lang.String)
で指定されたコンテキスト)から名前付きターゲット Bean を取得する新しいDelegatingFilterProxy
を作成します。DelegatingFilterProxy
(StringSE targetBeanName, WebApplicationContext wac) 指定された SpringWebApplicationContext
から名前付きターゲット Bean を取得する新しいDelegatingFilterProxy
を作成します。メソッドのサマリー
修飾子と型メソッド説明void
destroy()
サブクラスはこれをオーバーライドして、カスタムフィルターのシャットダウンを実行できます。protected void
destroyDelegate
(FilterEE delegate) Filter デリゲートを破棄します。void
doFilter
(ServletRequestEE request, ServletResponseEE response, FilterChainEE filterChain) protected WebApplicationContext
可能な場合、構築時に渡されたWebApplicationContext
を返します。デリゲートFilter
EE Bean をロードするWebApplicationContext
を取得するために使用する必要がある ServletContext 属性の名前を返します。protected StringSE
Spring アプリケーションコンテキスト内のターゲット Bean の名前を返します。protected FilterEE
Bean として指定された Spring アプリケーションコンテキストとして定義されたフィルターデリゲートを初期化します。protected void
サブクラスはこれをオーバーライドして、カスタム初期化を実行できます。protected void
invokeDelegate
(FilterEE delegate, ServletRequestEE request, ServletResponseEE response, FilterChainEE filterChain) 実際に、指定されたリクエストとレスポンスでデリゲートフィルターを呼び出します。protected boolean
ターゲット Bean でFilter.init
およびFilter.destroy
ライフサイクルメソッドを呼び出すかどうかを返します。void
setContextAttribute
(StringSE contextAttribute) デリゲートFilter
EE Bean をロードするWebApplicationContext
を取得するために使用する必要がある ServletContext 属性の名前を設定します。void
setTargetBeanName
(StringSE targetBeanName) Spring アプリケーションコンテキストでターゲット Bean の名前を設定します。void
setTargetFilterLifecycle
(boolean targetFilterLifecycle) ターゲット Bean でFilter.init
およびFilter.destroy
ライフサイクルメソッドを呼び出すかどうかを設定します。クラス org.springframework.web.filter.GenericFilterBean から継承されたメソッド
addRequiredProperty, afterPropertiesSet, createEnvironment, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, setBeanName, setEnvironment, setServletContext
コンストラクターの詳細
DelegatingFilterProxy
public DelegatingFilterProxy()新しいDelegatingFilterProxy
を作成します。web.xml
での従来の使用用。DelegatingFilterProxy
指定されたFilter
EE デリゲートで新しいDelegatingFilterProxy
を作成します。Spring アプリケーションコンテキストとのやり取り、ターゲット Bean 名の指定などの必要性を完全に回避します。フィルターのインスタンスベースの登録で使用します。
- パラメーター:
delegate
- このプロキシが委譲してライフサイクルを管理するFilter
インスタンス(null
であってはならない)- 関連事項:
DelegatingFilterProxy
ServletContext
にある SpringWebApplicationContext
(「ルート」アプリケーションコンテキストまたはsetContextAttribute(java.lang.String)
で指定されたコンテキスト)から名前付きターゲット Bean を取得する新しいDelegatingFilterProxy
を作成します。フィルターのインスタンスベースの登録で使用します。
ターゲット Bean は、標準のサーブレットフィルターインターフェースを実装する必要があります。
- パラメーター:
targetBeanName
- Spring アプリケーションコンテキストで検索するターゲットフィルター Bean の名前(null
であってはなりません)。- 関連事項:
DelegatingFilterProxy
指定された SpringWebApplicationContext
から名前付きターゲット Bean を取得する新しいDelegatingFilterProxy
を作成します。フィルターのインスタンスベースの登録で使用します。
ターゲット Bean は、標準のサーブレットフィルターインターフェースを実装する必要があります。
指定された
WebApplicationContext
は、渡されたときにリフレッシュされる場合とされない場合があります。そうでない場合、およびコンテキストがConfigurableApplicationContext
を実装している場合は、名前付きターゲット Bean を取得する前にrefresh()
が試行されます。このプロキシの
Environment
は、指定されたWebApplicationContext
から継承されます。- パラメーター:
targetBeanName
- Spring アプリケーションコンテキスト内のターゲットフィルター Bean の名前(null
であってはなりません)。wac
- ターゲットフィルターを取得するアプリケーションコンテキスト。null
の場合、アプリケーションコンテキストはフォールバックとしてServletContext
から検索されます。- 関連事項:
メソッドの詳細
setContextAttribute
デリゲートFilter
EE Bean をロードするWebApplicationContext
を取得するために使用する必要がある ServletContext 属性の名前を設定します。getContextAttribute
デリゲートFilter
EE Bean をロードするWebApplicationContext
を取得するために使用する必要がある ServletContext 属性の名前を返します。setTargetBeanName
Spring アプリケーションコンテキストでターゲット Bean の名前を設定します。ターゲット Bean は、標準のサーブレットフィルターインターフェースを実装する必要があります。デフォルトでは、
web.xml
の DelegatingFilterProxy に指定されたfilter-name
が使用されます。getTargetBeanName
Spring アプリケーションコンテキスト内のターゲット Bean の名前を返します。setTargetFilterLifecycle
public void setTargetFilterLifecycle(boolean targetFilterLifecycle) ターゲット Bean でFilter.init
およびFilter.destroy
ライフサイクルメソッドを呼び出すかどうかを設定します。デフォルトは "false" です。ターゲット Bean は通常、ライフサイクルを管理するために Spring アプリケーションコンテキストに依存しています。このフラグを "true" に設定すると、サーブレットコンテナーがターゲットフィルターのライフサイクルを制御し、このプロキシが対応する呼び出しを委譲します。
isTargetFilterLifecycle
protected boolean isTargetFilterLifecycle()ターゲット Bean でFilter.init
およびFilter.destroy
ライフサイクルメソッドを呼び出すかどうかを返します。initFilterBean
クラスからコピーされた説明:GenericFilterBean
サブクラスはこれをオーバーライドして、カスタム初期化を実行できます。このフィルターのすべての Bean プロパティは、このメソッドが呼び出される前に設定されています。メモ: このメソッドは、Spring アプリケーションコンテキストでの標準のフィルター初期化およびフィルター Bean 初期化から呼び出されます。フィルター名と ServletContext はどちらの場合でも使用できます。
このデフォルトの実装は空です。
- オーバーライド:
- クラス
GenericFilterBean
のinitFilterBean
- 例外:
ServletExceptionEE
- サブクラスの初期化が失敗した場合- 関連事項:
doFilter
public void doFilter(ServletRequestEE request, ServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE destroy
public void destroy()クラスからコピーされた説明:GenericFilterBean
サブクラスはこれをオーバーライドして、カスタムフィルターのシャットダウンを実行できます。メモ: このメソッドは、標準のフィルター破棄および Spring アプリケーションコンテキストでのフィルター Bean 破棄から呼び出されます。
このデフォルトの実装は空です。
- 次で指定:
- インターフェース
DisposableBean
のdestroy
- 次で指定:
- インターフェース
FilterEE
のdestroyEE
- オーバーライド:
- クラス
GenericFilterBean
のdestroy
findWebApplicationContext
可能な場合は、構築時に渡されたWebApplicationContext
を返します。そうでなければ、とServletContext
属性からWebApplicationContext
を取得しようと設定された名前のセットならば。それ以外の場合は、よく知られている「ルート」アプリケーションコンテキスト属性でWebApplicationContext
を検索します。このフィルターを初期化(または呼び出し)する前に、WebApplicationContext
がすでにロードされ、ServletContext
に保管されている必要があります。サブクラスはこのメソッドをオーバーライドして、別の
WebApplicationContext
取得戦略を提供できます。- 戻り値:
- このプロキシの
WebApplicationContext
、または見つからない場合はnull
- 関連事項:
initDelegate
Bean として指定された Spring アプリケーションコンテキストとして定義されたフィルターデリゲートを初期化します。デフォルトの実装では、アプリケーションコンテキストから Bean をフェッチし、その上で標準の
Filter.init
メソッドを呼び出して、このフィルタープロキシの FilterConfig を渡します。- パラメーター:
wac
- ルートアプリケーションコンテキスト- 戻り値:
- 初期化されたデリゲートフィルター
- 例外:
ServletExceptionEE
- フィルターによってスローされた場合- 関連事項:
invokeDelegate
protected void invokeDelegate(FilterEE delegate, ServletRequestEE request, ServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE 実際に、指定されたリクエストとレスポンスでデリゲートフィルターを呼び出します。- パラメーター:
delegate
- デリゲートフィルターrequest
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンスfilterChain
- 現在の FilterChain- 例外:
ServletExceptionEE
- フィルターによってスローされた場合IOExceptionSE
- フィルターによってスローされた場合
destroyDelegate
Filter デリゲートを破棄します。デフォルトの実装では、Filter.destroy
を呼び出すだけです。- パラメーター:
delegate
- フィルターデリゲート (非null
)- 関連事項: