boot 웹프로젝트 (23) - Filter
Filter를 적용하는 방법에 대해 알아보자. Spring Boot에서 servlet에서 제공하는 Filter interface를 구현하여 사용할 수 있다. Filter를 작성할 때에는 필터체인에서 실행될 순서를 지정하기 위해 @Order 어노테이션을 붙인다. 지정할 값은 -105보다 큰 값을 지정해야 한다. 왜냐면 스프링이 사용하는 RequestFilter의 Order 값은 -105이다. 우리는 그냥 1부터 지정한다.
package com.sogood.core.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
@Order(1)
public class AllRequestFilter implements Filter {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
//HttpServletResponse res = (HttpServletResponse) response;
logger.debug(">>>>> doFilter:" + req.getRequestURI());
chain.doFilter(request, response);
}
}
이제 스프링에 Filter를 등록해야 한다. FilterRegistrationBean을 이용하여 등록한다. addUrlPatterns() 메서드를 이용하여 필터가 처리할 URL Pattern을 설정할 수 있다.
@Bean
public FilterRegistrationBean<AllRequestFilter> loggingFilter(){
FilterRegistrationBean<AllRequestFilter> registrationBean = new lterRegistrationBean<>();
registrationBean.setFilter(new AllRequestFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
주의: 필터를 정의할 때 @Component 어노테이션을 사용하지 말아야 한다.
아직 구체적으로 어떤 필터를 지정해야할지 정하지 않았다. 추후 보완할 예정이다.
Author And Source
이 문제에 관하여(boot 웹프로젝트 (23) - Filter), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@latte_h/Springboot-웹프로젝트-23-Filter저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)