public abstract class GenericFilterBean extends Object implements Filter, BeanNameAware, EnvironmentAware, EnvironmentCapable, ServletContextAware, InitializingBean, DisposableBean
Filter
which treats
its config parameters (init-param
entries within the
filter
tag in web.xml
) as bean properties.
A handy superclass for any type of filter. Type conversion of config parameters is automatic, with the corresponding setter method getting invoked with the converted value. It is also possible for subclasses to specify required properties. Parameters without matching bean property setter will simply be ignored.
This filter leaves actual filtering to subclasses, which have to
implement the Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
method.
This generic filter base class has no dependency on the Spring
ApplicationContext
concept.
Filters usually don't load their own context but rather access service
beans from the Spring root application context, accessible via the
filter's ServletContext
(see
WebApplicationContextUtils
).
addRequiredProperty(java.lang.String)
,
initFilterBean()
,
Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
Modifier and Type | Field and Description |
---|---|
protected Log |
logger
Logger available to subclasses
|
Constructor and Description |
---|
GenericFilterBean() |
Modifier and Type | Method and Description |
---|---|
protected void |
addRequiredProperty(String property)
Subclasses can invoke this method to specify that this property
(which must match a JavaBean property they expose) is mandatory,
and must be supplied as a config parameter.
|
void |
afterPropertiesSet()
Calls the
initFilterBean() method that might
contain custom initialization of a subclass. |
protected Environment |
createEnvironment()
Create and return a new
StandardServletEnvironment . |
void |
destroy()
Subclasses may override this to perform custom filter shutdown.
|
Environment |
getEnvironment()
Return the
Environment associated with this filter. |
FilterConfig |
getFilterConfig()
Make the FilterConfig of this filter available, if any.
|
protected String |
getFilterName()
Make the name of this filter available to subclasses.
|
protected ServletContext |
getServletContext()
Make the ServletContext of this filter available to subclasses.
|
void |
init(FilterConfig filterConfig)
Standard way of initializing this filter.
|
protected void |
initBeanWrapper(BeanWrapper bw)
Initialize the BeanWrapper for this GenericFilterBean,
possibly with custom editors.
|
protected void |
initFilterBean()
Subclasses may override this to perform custom initialization.
|
void |
setBeanName(String beanName)
Stores the bean name as defined in the Spring bean factory.
|
void |
setEnvironment(Environment environment)
Set the
Environment that this filter runs in. |
void |
setServletContext(ServletContext servletContext)
Stores the ServletContext that the bean factory runs in.
|
protected final Log logger
public void setBeanName(String beanName)
Only relevant in case of initialization as bean, to have a name as fallback to the filter name usually provided by a FilterConfig instance.
setBeanName
in interface BeanNameAware
beanName
- the name of the bean in the factory.
Note that this name is the actual bean name used in the factory, which may
differ from the originally specified name: in particular for inner bean
names, the actual bean name might have been made unique through appending
"#..." suffixes. Use the BeanFactoryUtils.originalBeanName(String)
method to extract the original bean name (without suffix), if desired.BeanNameAware
,
getFilterName()
public void setEnvironment(Environment environment)
Environment
that this filter runs in.
Any environment set here overrides the StandardServletEnvironment
provided by default.
This Environment
object is used only for resolving placeholders in
resource paths passed into init-parameters for this filter. If no init-params are
used, this Environment
can be essentially ignored.
setEnvironment
in interface EnvironmentAware
public Environment getEnvironment()
Environment
associated with this filter.
If none specified, a default environment will be initialized via
createEnvironment()
.
getEnvironment
in interface EnvironmentCapable
protected Environment createEnvironment()
StandardServletEnvironment
.
Subclasses may override this in order to configure the environment or specialize the environment type returned.
public void setServletContext(ServletContext servletContext)
Only relevant in case of initialization as bean, to have a ServletContext as fallback to the context usually provided by a FilterConfig instance.
setServletContext
in interface ServletContextAware
servletContext
- ServletContext object to be used by this objectServletContextAware
,
getServletContext()
public void afterPropertiesSet() throws ServletException
initFilterBean()
method that might
contain custom initialization of a subclass.
Only relevant in case of initialization as bean, where the
standard init(FilterConfig)
method won't be called.
afterPropertiesSet
in interface InitializingBean
ServletException
initFilterBean()
,
init(javax.servlet.FilterConfig)
public void destroy()
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
protected final void addRequiredProperty(String property)
This method is only relevant in case of traditional initialization driven by a FilterConfig instance.
property
- name of the required propertypublic final void init(FilterConfig filterConfig) throws ServletException
init
in interface Filter
filterConfig
- the configuration for this filterServletException
- if bean properties are invalid (or required
properties are missing), or if subclass initialization fails.initFilterBean()
protected void initBeanWrapper(BeanWrapper bw) throws BeansException
This default implementation is empty.
bw
- the BeanWrapper to initializeBeansException
- if thrown by BeanWrapper methodsPropertyEditorRegistry.registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)
protected void initFilterBean() throws ServletException
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.
ServletException
- if subclass initialization failsgetFilterName()
,
getServletContext()
@Nullable public FilterConfig getFilterConfig()
getServletConfig()
.
Public to resemble the getFilterConfig()
method
of the Servlet Filter version that shipped with WebLogic 6.1.
null
if none availableGenericServlet.getServletConfig()
@Nullable protected String getFilterName()
getServletName()
.
Takes the FilterConfig's filter name by default. If initialized as bean in a Spring application context, it falls back to the bean name as defined in the bean factory.
null
if none availableGenericServlet.getServletName()
,
FilterConfig.getFilterName()
,
setBeanName(java.lang.String)
protected ServletContext getServletContext()
getServletContext()
.
Takes the FilterConfig's ServletContext by default. If initialized as bean in a Spring application context, it falls back to the ServletContext that the bean factory runs in.
IllegalStateException
- if no ServletContext is availableGenericServlet.getServletContext()
,
FilterConfig.getServletContext()
,
setServletContext(javax.servlet.ServletContext)