Spring boot : Filter에서 발생하는 Exception 처리하기 (링크)

김아무개·2023년 8월 23일
0

Spring Boot 🍃

목록 보기
68/95
post-custom-banner

Filter Exception : https://jhkimmm.tistory.com/29

Filter : https://taetaetae.github.io/2020/04/06/spring-boot-filter/

시큐리티 필터 적용할때도 적용할 수 있겠다!!!!!!!!!!



filter 에 사용 될 url에 대한 필터를 적용하려면

1. @WebFilter + @ServletComponentScan 조합을 사용하거나

2. FilterConfig 파일을 생성해서 FilterRegistrationBean 을 사용


filter에서 모든 url을 확인하려면

@ComponentScan + @Component 조합을 사용


출처 : https://taetaetae.github.io/2020/04/06/spring-boot-filter/


나의 경우
url에 대한 필터를 적용해야 하면서
Filter에서 bean 주입 받아 사용할 객체가 몇개 있었기 때문에
@Component 어노테이션을 붙여주어야 했다.

그래서 FilterConfig 파일을 만들고 FilterRegistrationBean 을 사용하는 방법을 택함!


글을 작성하고나서 조금 더 찾아보니

@ServletComponentScan 은
base package 하위에 존재하는 서블릿 컴포넌트인 서블릿, 필터, 리스너를 모두 찾아
bean으로 등록해준다고 한다.

다만 생성한 필터가 스캔 당하려면 @WebFilter 어노테이션을 부착하고 있어야 한다.

내장 톰캣 사용시에 적용되는 부분으로

Spring boot는 내장 톰캣이 기본이기 때문에

기본 동작하는 부분을 확인할 수 있다.

출처 : https://findmypiece.tistory.com/57


내 프로젝트에도
@WebFilter + @ServletComponentScan 조합으로 사용했어도 잘 동작했을 것이다.

하지만 base package 하위의 모든 컴포넌트를 조사하는 작업이 별도로 추가되지 않을까?

뭔가 성능에 쬐끔 더 안좋을것 같다는 생각을 해본다 😶‍🌫️


  • 챗봇에게 물어봤다

    결론은 별 차이 없는 것으로 😀
    @WebFilter + @ServletComponentScan 조합을 사용하도록 수정해야겠다!


추가로

Filter를 사용하면

urlPattern 에 /**/customer/** 와 같은 형태는 작성할 수 없다고 한다.
이런 형태를 사용하려면 Interceptor를 사용해야 한다.

profile
Hello velog! 
post-custom-banner

0개의 댓글