Delegates Filter requests to a Spring-managed bean.
This class acts as a proxy on behalf of a
target Filter that is defined in the Spring bean context. It is necessary to specify which target
Filter should be proxied as a filter initialization parameter.
On filter initialisation, the class will use Spring's
WebApplicationContextUtils.getWebApplicationContext(ServletContext sc) method to obtain an
ApplicationContext instance. It will expect to find the target Filter in this
ApplicationContext .
To use this filter, it is necessary to specify one of the following filter initialization parameters:
targetClass indicates the class of the target Filter defined in the bean
context. The only requirements are that this target class implements the javax.servlet.Filter
interface and at least one instance is available in the ApplicationContext .
targetBean indicates the bean name of the target class.
If both initialization parameters are specified, targetBean takes priority.
An additional
initialization parameter, init , is also supported. If set to "lazy " the initialization
will take place on the first HTTP request, rather than at filter creation time. This makes it possible to use
FilterToBeanProxy with the Spring ContextLoaderServlet . Where possible you should not use
this initialization parameter, instead using ContextLoaderListener .
A final optional initialization parameter, lifecycle , determines whether the servlet container
or the IoC container manages the lifecycle of the proxied filter. When possible you should write your filters to be
managed via the IoC container interfaces such as
org.springframework.beans.factory.InitializingBean and
org.springframework.beans.factory.DisposableBean . If you cannot control the filters you wish to proxy (eg
you do not have their source code) you might need to allow the servlet container to manage lifecycle via the
javax.servlet.Filter.init(javax.servlet.FilterConfig) and
javax.servlet.Filter.destroy methods. If this
case, set the lifecycle initialization parameter to servlet-container-managed . If the
parameter is any other value, servlet container lifecycle methods will not be delegated through to the proxy.
author: Ben Alex version: $Id: FilterToBeanProxy.java 1784 2007-02-24 21:00:24Z luke_t $ |