홍이의 개발 노트

Spring boot 에서 Servlet과 Filter 등록하는 방법 본문

개발이야기/스프링(Spring)

Spring boot 에서 Servlet과 Filter 등록하는 방법

코바 2015. 8. 27. 00:32

기존 Spring 3.1+ (with Servlet 3+) 에서 web.xml을 사용하지 않고 개발시에 Servlet 및 Filter를 등록하고자 할 때에는 

org.springframework.web.WebApplicationInitializer


그리고 Spring 3.2+(with Servlet 3+에서는 인터페이스를 상속하여 편하게 사용할 수 있도록 만든 클래스인  

org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer

를 사용한다. 


그런데 문제는 Spring boot에서 개발시에는 위의 인터페이스 또는 클래스가 호출 되지 않는다. 

아마 Embed Tomcat을 사용하면서 변경된 부분이 있는듯하다.


그래서 역시나 찾아보니 Spring boot용 동일한 기능을 하는 새로운 인터페이스를 제공한다.

org.springframework.boot.context.embedded.ServletContextInitializer


이 인터페이스를 상속 받아야 원하는 기능이 수행하게 된다.

그리고 따로 인터페이스를 상속 받지 않고 Bean등록만으로도 Servlet과 Filter를 등록할 수 있는 클래스도 따로 제공한다.


- Filter 등록 클래스

org.springframework.boot.context.embedded.FilterRegistrationBean


- Servlet 등록 클래스

org.springframework.boot.context.embedded.ServletRegistrationBean


간단한 사용방법 예제

@Bean                                                                                         

public ServletRegistrationBean h2servletRegistration(){                                       

    ServletRegistrationBean registrationBean = new ServletRegistrationBean(new WebServlet()); 

    registrationBean.addUrlMappings("/console/*");                                            

    return registrationBean;                                                                  

}                                                                                             

이런 형태로 등록해서 바로 사용이 가능하다.


자세한 부분은 역시나 Spring boot 레퍼런스 문서에 나와 있다.