クラス DelegatingFilterProxy

java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.DelegatingFilterProxy
実装されたすべてのインターフェース:
FilterEEAwareBeanNameAwareDisposableBeanInitializingBeanEnvironmentAwareEnvironmentCapableServletContextAware

public class DelegatingFilterProxy extends GenericFilterBean
Filter インターフェースを実装する Spring 管理の Bean に委譲する標準サーブレットフィルターのプロキシ。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
関連事項:
  • コンストラクターの詳細

    • DelegatingFilterProxy

      public DelegatingFilterProxy()
      新しい DelegatingFilterProxy を作成します。web.xml での従来の使用用。
      関連事項:
    • DelegatingFilterProxy

      public DelegatingFilterProxy(FilterEE delegate)
      指定された FilterEE デリゲートで新しい DelegatingFilterProxy を作成します。Spring アプリケーションコンテキストとのやり取り、ターゲット Bean 名の指定などの必要性を完全に回避します。

      フィルターのインスタンスベースの登録で使用します。

      パラメーター:
      delegate - このプロキシが委譲してライフサイクルを管理する Filter インスタンス(null であってはならない)
      関連事項:
    • DelegatingFilterProxy

      public DelegatingFilterProxy(StringSE targetBeanName)
      ServletContext にある Spring WebApplicationContext (「ルート」アプリケーションコンテキストまたは setContextAttribute(java.lang.String) で指定されたコンテキスト)から名前付きターゲット Bean を取得する新しい DelegatingFilterProxy を作成します。

      フィルターのインスタンスベースの登録で使用します。

      ターゲット Bean は、標準のサーブレットフィルターインターフェースを実装する必要があります。

      パラメーター:
      targetBeanName - Spring アプリケーションコンテキストで検索するターゲットフィルター Bean の名前(null であってはなりません)。
      関連事項:
    • DelegatingFilterProxy

      public DelegatingFilterProxy(StringSE targetBeanName, @Nullable WebApplicationContext wac)
      指定された Spring WebApplicationContext から名前付きターゲット Bean を取得する新しい DelegatingFilterProxy を作成します。

      フィルターのインスタンスベースの登録で使用します。

      ターゲット Bean は、標準のサーブレットフィルターインターフェースを実装する必要があります。

      指定された WebApplicationContext は、渡されたときにリフレッシュされる場合とされない場合があります。そうでない場合、およびコンテキストが ConfigurableApplicationContext を実装している場合は、名前付きターゲット Bean を取得する前に refresh() が試行されます。

      このプロキシの Environment は、指定された WebApplicationContext から継承されます。

      パラメーター:
      targetBeanName - Spring アプリケーションコンテキスト内のターゲットフィルター Bean の名前(null であってはなりません)。
      wac - ターゲットフィルターを取得するアプリケーションコンテキスト。null の場合、アプリケーションコンテキストはフォールバックとして ServletContext から検索されます。
      関連事項:
  • メソッドの詳細

    • setContextAttribute

      public void setContextAttribute(@Nullable StringSE contextAttribute)
      デリゲート FilterEE Bean をロードする WebApplicationContext を取得するために使用する必要がある ServletContext 属性の名前を設定します。
    • getContextAttribute

      @Nullable public StringSE getContextAttribute()
      デリゲート FilterEE Bean をロードする WebApplicationContext を取得するために使用する必要がある ServletContext 属性の名前を返します。
    • setTargetBeanName

      public void setTargetBeanName(@Nullable StringSE targetBeanName)
      Spring アプリケーションコンテキストでターゲット Bean の名前を設定します。ターゲット Bean は、標準のサーブレットフィルターインターフェースを実装する必要があります。

      デフォルトでは、web.xml の DelegatingFilterProxy に指定された filter-name が使用されます。

    • getTargetBeanName

      @Nullable protected StringSE 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

      protected void initFilterBean() throws ServletExceptionEE
      クラスからコピーされた説明: GenericFilterBean
      サブクラスはこれをオーバーライドして、カスタム初期化を実行できます。このフィルターのすべての Bean プロパティは、このメソッドが呼び出される前に設定されています。

      メモ: このメソッドは、Spring アプリケーションコンテキストでの標準のフィルター初期化およびフィルター Bean 初期化から呼び出されます。フィルター名と ServletContext はどちらの場合でも使用できます。

      このデフォルトの実装は空です。

      オーバーライド:
      クラス GenericFilterBeaninitFilterBean 
      例外:
      ServletExceptionEE - サブクラスの初期化が失敗した場合
      関連事項:
    • doFilter

      public void doFilter(ServletRequestEE request, ServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE
      例外:
      ServletExceptionEE
      IOExceptionSE
    • destroy

      public void destroy()
      クラスからコピーされた説明: GenericFilterBean
      サブクラスはこれをオーバーライドして、カスタムフィルターのシャットダウンを実行できます。

      メモ: このメソッドは、標準のフィルター破棄および Spring アプリケーションコンテキストでのフィルター Bean 破棄から呼び出されます。

      このデフォルトの実装は空です。

      次で指定:
      インターフェース DisposableBeandestroy 
      次で指定:
      インターフェース FilterEEdestroyEE 
      オーバーライド:
      クラス GenericFilterBeandestroy 
    • findWebApplicationContext

      @Nullable protected WebApplicationContext findWebApplicationContext()
      可能な場合は、構築時に渡された WebApplicationContext を返します。そうでなければ、と ServletContext 属性から WebApplicationContext を取得しようと設定された名前のセットならば。それ以外の場合は、よく知られている「ルート」アプリケーションコンテキスト属性で WebApplicationContext を検索します。このフィルターを初期化(または呼び出し)する前に、WebApplicationContext がすでにロードされ、ServletContext に保管されている必要があります。

      サブクラスはこのメソッドをオーバーライドして、別の WebApplicationContext 取得戦略を提供できます。

      戻り値:
      このプロキシの WebApplicationContext、または見つからない場合は null 
      関連事項:
    • initDelegate

      protected FilterEE initDelegate(WebApplicationContext wac) throws ServletExceptionEE
      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

      protected void destroyDelegate(FilterEE delegate)
      Filter デリゲートを破棄します。デフォルトの実装では、Filter.destroy を呼び出すだけです。
      パラメーター:
      delegate - フィルターデリゲート (非 null)
      関連事項: