일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring Boot
- spring boot mybatis
- 데브툴즈
- mybatis
- Fiilter
- OAuth2.0
- WebApplicationInitializer
- KSUG
- 스프링 부트
- spring
- spring boot 1.3
- spring camp
- spring cloud
- Multi DataSource
- apache thrift
- spring cloud config
- devtools
- OAuth 2.0
- 인텔리J
- spring test mvc
- Spring MVC
- spring boot devtools
- ServletContextInitializer
- spring-mybatis
- 스프링
- Spring Security OAuth
- spring security
- @MVC
- 스프링시큐리티
- elasticache
- Today
- Total
홍이의 개발 노트
Spring boot 에서 Servlet과 Filter 등록하는 방법 본문
기존 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 레퍼런스 문서에 나와 있다.