Filters con Spring
De Spring Peru Wiki
Inicio
Configuración
Configuración del archivo web.xml:
Se declara el filter authenticationFilter, la clase es org.springframework.web.filter.DelegatingFilterProxy. Esta clase realiza la integración con el ApplicationContext de Spring delegando la implementación del filtro a un bean configurado por Spring.
<web-app>
<!-- ... -->
<filter>
<filter-name>authenticationFilter</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>authenticationFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<!-- ... -->
</web-app>
Configuración del ApplicationContext de Spring:
Se declara el bean authenticationFilter, notar que el nombre del bean debe ser el mismo del declarado en filter-name del archivo web.xml.
<beans>
<bean id="bapiExecutionService"
class="com.alicorp.mind.framework.service.impl.BapiExecutionServiceImpl" />
<bean name="authenticationFilter"
class="com.alicorp.mind.framework.web.filter.AuthenticationFilter"
parent="bapiExecutionTemplate">
<property name="bapiExecutionService"
ref="bapiExecutionService" />
</bean>
</beans>
Implementación del filtro: Se ha seleccionado OncePerRequestFilter como clase base del filtro. Esta clase garantiza que el filtro sea ejecutado una sola vez por request.
public class AuthenticationFilter extends OncePerRequestFilter {
private final Log log = LogFactory.getLog(AuthenticationFilter.class);
private BapiExecutionService bapiExecutionService;
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
// Implementacion del filtro ...
}
public void setBapiExecutionService(
BapiExecutionService bapiExecutionService) {
this.bapiExecutionService = bapiExecutionService;
}
}
--Lshimokawa 18 feb 2008

