org.springframework.web.filter

## Class CompositeFilter

- java.lang.Object
- - org.springframework.web.filter.CompositeFilter

- All Implemented Interfaces:
    Filter

      public class CompositeFilter
      extends Object
      implements Filter

  A generic composite servlet `Filter` that just delegates its behaviour to a chain (list) of user supplied filters, achieving the functionality of a `FilterChain`, but conveniently using only `Filter` instances. This is useful for filters that require dependency injection, and can therefore be set up in a Spring application context. Typically this composite would be used in conjunction with `DelegatingFilterProxy`, so that it can be declared in Spring but applied to a servlet context.
  Since:
    3.1
  Author:
    Dave Syer

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CompositeFilter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `destroy()` Clean up all the filters supplied, calling each one's destroy method in turn, but in reverse order.
    `void` | `doFilter(ServletRequest request, ServletResponse response, FilterChain chain)` Forms a temporary chain from the list of delegate filters supplied (`setFilters(List)`) and executes them in order.
    `void` | `init(FilterConfig config)` Initialize all the filters, calling each one's init method in turn in the order supplied.
    `void` | `setFilters(List<? extends Filter> filters)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CompositeFilter

          public CompositeFilter()

  - ### Method Detail

    - #### setFilters

          public void setFilters(List<? extends Filter> filters)

    - #### destroy

          public void destroy()

      Clean up all the filters supplied, calling each one's destroy method in turn, but in reverse order.
      Specified by:
        `destroy` in interface `Filter`
      See Also:
        `Filter.init(FilterConfig)`

    - #### init

          public void init(FilterConfig config)
                    throws ServletException

      Initialize all the filters, calling each one's init method in turn in the order supplied.
      Specified by:
        `init` in interface `Filter`
      Throws:
        `ServletException`
      See Also:
        `Filter.init(FilterConfig)`

    - #### doFilter

          public void doFilter(ServletRequest request,
                      ServletResponse response,
                      FilterChain chain)
                        throws IOException,
                               ServletException

      Forms a temporary chain from the list of delegate filters supplied (`setFilters(List)`) and executes them in order. Each filter delegates to the next one in the list, achieving the normal behaviour of a `FilterChain`, despite the fact that this is a `Filter`.
      Specified by:
        `doFilter` in interface `Filter`
      Throws:
        `IOException`
        `ServletException`
      See Also:
        `Filter.doFilter(ServletRequest, ServletResponse, FilterChain)`