|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.DelegatingFilterProxy
public class DelegatingFilterProxy
Proxy for a standard Servlet 2.3 Filter, delegating to a Spring-managed
bean that implements the Filter interface. Supports a "targetBeanName"
filter init-param in web.xml
, specifying the name of the
target bean in the Spring application context.
web.xml
will usually contain a DelegatingFilterProxy definition,
with the specified filter-name
corresponding to a bean name in
Spring's root application context. All calls to the filter proxy will then
be delegated to that bean in the Spring context, which is required to implement
the standard Servlet 2.3 Filter interface.
This approach is particularly useful for Filter implementation with complex setup needs, allowing to apply the full Spring bean definition machinery to Filter instances. Alternatively, consider standard Filter setup in combination with looking up service beans from the Spring root application context.
NOTE: The lifecycle methods defined by the Servlet Filter interface
will by default not be delegated to the target bean, relying on the
Spring application context to manage the lifecycle of that bean. Specifying
the "targetFilterLifecycle" filter init-param as "true" will enforce invocation
of the Filter.init
and Filter.destroy
lifecycle methods
on the target bean, letting the servlet container manage the filter lifecycle.
This class is inspired by Acegi Security's FilterToBeanProxy class, written by Ben Alex.
setTargetBeanName(java.lang.String)
,
setTargetFilterLifecycle(boolean)
,
Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
,
Filter.init(javax.servlet.FilterConfig)
,
Filter.destroy()
Field Summary |
---|
Fields inherited from class org.springframework.web.filter.GenericFilterBean |
---|
logger |
Constructor Summary | |
---|---|
DelegatingFilterProxy()
|
Method Summary | |
---|---|
void |
destroy()
Subclasses may override this to perform custom filter shutdown. |
protected void |
destroyDelegate(Filter delegate)
Destroy the Filter delegate. |
void |
doFilter(ServletRequest request,
ServletResponse response,
FilterChain filterChain)
|
protected String |
getTargetBeanName()
Return the name of the target bean in the Spring application context. |
protected Filter |
initDelegate(WebApplicationContext wac)
Initialize the Filter delegate, defined as bean the given Spring application context. |
protected void |
initFilterBean()
Subclasses may override this to perform custom initialization. |
protected boolean |
isTargetFilterLifecycle()
Return whether to invoke the Filter.init and
Filter.destroy lifecycle methods on the target bean. |
void |
setTargetBeanName(String targetBeanName)
Set the name of the target bean in the Spring application context. |
void |
setTargetFilterLifecycle(boolean targetFilterLifecycle)
Set whether to invoke the Filter.init and
Filter.destroy lifecycle methods on the target bean. |
Methods inherited from class org.springframework.web.filter.GenericFilterBean |
---|
addRequiredProperty, afterPropertiesSet, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, setBeanName, setFilterConfig, setServletContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DelegatingFilterProxy()
Method Detail |
---|
public void setTargetBeanName(String targetBeanName)
By default, the filter-name
as specified for the
DelegatingFilterProxy in web.xml
will be used.
protected String getTargetBeanName()
public void setTargetFilterLifecycle(boolean targetFilterLifecycle)
Filter.init
and
Filter.destroy
lifecycle methods on the target bean.
Default is "false"; target beans usually rely on the Spring application context for managing their lifecycle. Setting this flag to "true" means that the servlet container will control the lifecycle of the target Filter, with this proxy delegating the corresponding calls.
protected boolean isTargetFilterLifecycle()
Filter.init
and
Filter.destroy
lifecycle methods on the target bean.
protected void initFilterBean() throws ServletException
GenericFilterBean
Note: This method will be called from standard filter initialization as well as filter bean initialization in a Spring application context. Filter name and ServletContext will be available in both cases.
This default implementation is empty.
initFilterBean
in class GenericFilterBean
ServletException
- if subclass initialization failsGenericFilterBean.getFilterName()
,
GenericFilterBean.getServletContext()
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws ServletException, IOException
ServletException
IOException
public void destroy()
GenericFilterBean
Note: This method will be called from standard filter destruction as well as filter bean destruction in a Spring application context.
This default implementation is empty.
destroy
in interface Filter
destroy
in interface DisposableBean
destroy
in class GenericFilterBean
protected Filter initDelegate(WebApplicationContext wac) throws ServletException
Default implementation fetches the bean from the application context
and calls the standard Filter.init
method on it, passing
in the FilterConfig of this Filter proxy.
wac
- the root application context
ServletException
- if thrown by the FiltergetTargetBeanName()
,
isTargetFilterLifecycle()
,
GenericFilterBean.getFilterConfig()
,
Filter.init(javax.servlet.FilterConfig)
protected void destroyDelegate(Filter delegate)
Filter.destroy
on it.
delegate
- the Filter delegate (never null
)isTargetFilterLifecycle()
,
Filter.destroy()
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |