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
`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)`