반응형
필터(Filter)
: Spring Boot에서 필터는 웹 애플리케이션 영역에서 관리된다. 필터는 요청 및 응답을 처리하기 전에 특정 작업을 수행할 수 있는 컴포넌트로, 클라이언트 요청이 실제 서블릿이나 컨트롤러에 도달하기 전에 실행된다. 마찬가지로 응답이 클라이언트로 돌아가기 전에 필터를 거친다.
필터는 웹 애플리케이션 영역에서 관리되지만, 스프링 컨테이너가 필터를 인식하고 관리할 수 있도록 구성되어 있다.
그러나 필터는 스프링 컨테이너의 앞에 위치하며, 서블릿 컨테이너 또는 임베디드 웹 서버와 같은 웹 컨테이너 내에서 실행된다. 이렇게 하여 필터는 컨트롤러나 서블릿에 도달하기 전에 요청을 가로챌 수 있다.
필터 사용 목적
1. 인증 및 인가 : 사용자의 자격 증명을 확인하고 요청된 리소스에 대한 액세스 권한을 검사
2. 로깅 : 요청 및 응답에 대한 로깅을 수행한다.
3. 요청 및 응답 수정 : 헤더, 쿠키, 파라미터 등을 추가, 수정 또는 삭제할 수 있다.
4. CORS(Cross-Origin Resource Sharing) 설정 : 여러 도메인 간의 리소스 공유를 허용하거나 제한한다.
5. 압축 : 응답 데이터를 압축하여 전송 효율을 개선한다.
Spring Boot 애플리케이션에서 필터를 구현하려면
1. javax.servlet.Filter 인터페이스를 구현한 클래스를 생성하고,
2. 필요한 로직을 작성한 다음,
3. 필터를 Spring Boot 애플리케이션에 등록해야 한다.
필터를 등록하려면 FilterRegistrationBean을 사용하거나 @WebFilter 애너테이션을 사용해야 한다.
GlobalFilter.java
- Filter 인터페이스를 구현한 클래스 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | @Slf4j @Component public class GlobalFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // log.error(">> 요청 (request) 에 대한 앞단 처리"); // chain.doFilter(request, response); // log.error("<< 응답 (response) 에 대한 마지막 처리"); // 로깅 처리 : 요청 URI 콘솔창에 먼저 확인 HttpServletRequest httpRequest = (HttpServletRequest)request; HttpServletResponse httpResponse = (HttpServletResponse)response; log.error("요청 URI : {}", httpRequest.getRequestURI()); chain.doFilter(httpRequest, httpResponse); log.error("응답 상태 : {}", httpResponse.getStatus()); } } | cs |
반응형
'프로그래밍 > Spring Boot' 카테고리의 다른 글
Spring Boot_H2 DB 초기 설정 (0) | 2023.04.18 |
---|---|
Spring Boot_인터셉터(Interceptor) (0) | 2023.04.13 |
Spring Boot_예외 처리 (0) | 2023.04.13 |
Spring Boot_유효성 검사(Validation) (0) | 2023.04.13 |
Spring Boot_어노테이션 (0) | 2023.04.13 |