Daily Archives: 20 March 2016


How to add filter to spring mvc in java config?

In this post I show you how to add filter in two different kinds of spring based configurations.

Configuration by WebApplicationInitializer

  1. package raphaelsolarski.config;
  2.  
  3. import org.springframework.web.WebApplicationInitializer;
  4. import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
  5. import org.springframework.web.servlet.DispatcherServlet;
  6. import raphaelsolarski.filter.MyFilter;
  7. import javax.servlet.ServletContext;
  8. import javax.servlet.ServletRegistration;
  9.  
  10. public class MyWebAppInitializer implements WebApplicationInitializer {
  11.  
  12. public void onStartup(ServletContext container) {
  13. //here I can set up any kind of spring context -> xml/java...
  14. AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
  15. appContext.scan("raphaelsolarski");
  16. ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(appContext));
  17. registration.setLoadOnStartup(1);
  18. registration.addMapping("/");
  19. container.addFilter("My filter", MyFilter.class).addMappingForServletNames(null, false, "dispatcher");
  20. //or container.addFilter("My filter", MyFilter.class).addMappingForUrlPatterns(null, false, "/*");
  21. }
  22.  
  23. }

Configuration by AbstractAnnotationConfigDispatcherServletInitializer

  1. package com.raphaelsolarski.config;
  2.  
  3. import com.raphaelsolarski.filter.MyFilter;
  4. import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
  5. import javax.servlet.Filter;
  6.  
  7. public class MyDispatcher extends AbstractAnnotationConfigDispatcherServletInitializer{
  8. @Override
  9. protected Class<!--?-->[] getRootConfigClasses() {
  10. return null;
  11. }
  12.  
  13. @Override
  14. protected Class<!--?-->[] getServletConfigClasses() {
  15. return new Class<!--?-->[] {SpringConfig.class};
  16. }
  17.  
  18. @Override
  19. protected String[] getServletMappings() {
  20. return new String[] {"/"};
  21. }
  22.  
  23. @Override
  24. protected Filter[] getServletFilters() {
  25. return new Filter[] { new MyFilter() };
  26. }
  27. }