Community

안녕하세요! 개인적으로 필터는 서비스 기능 혹은 비지니스 로직과 상관없는 범용적인 기능, 예를 들어 XSS, CORS, ACL, Access Logging 등을 구현하면 좋고 인터셉터는 서비스

안녕하세요! 개인적으로 필터는 서비스 기능 혹은 비지니스 로직과 상관없는 범용적인 기능, 예를 들어 XSS, CORS, ACL, Access Logging 등을 구현하면 좋고 인터셉터는 서비스 기능과 관계된 혹은 Spring Container 에서 관리되는 Bean 이나 스레드풀 등을 사용해야할 때, 예를 들어 사용자 정보 조회를 통한 권한 혹은 서비스 기능과 관계된 체크(금지된 사용자, 신고받은 사용자 등), 커스텀 어노테이션을 사용한 기능 동작 등이 있을거 같습니다. 필터를 전혀 안쓰신다면 인터셉터로만 구성하시는것도 방법이지만, 혹여 유지보수 과정에서 필터를 사용하게 될 경우 예상치 못한 이슈를 경험하실 수 있습니다. 예를 들어 Access logging 기능을 인터셉터에서 구현하였는데 추후 유지보수 과정에서 어떤 필터를 추가하게 되면 해당 필터에서 오류나 reject 처리될 경우 인터셉터까지 요청이 전달되지 않아 로깅기능이 정상적으로 수행되지 못해 요청이 유입되었는지 알수가 없습니다. 그래서 유지보수 과정에서 이러한 이슈를 피하고자 한다면 범용적인 기능에 대해서는 필터로 구현하시는게 좋을 수 있습니다. 필터를 구현했을때 (좀 억지스러울수 있습니다만) 추가적인 장점으로 서블릿 기반 웹 컨테이너 프레임워크가 변경되더라도 동일하게 사용할 수 있다는 장점도 있습니다. 저의 짧은 지식이 작게나마 도움이 되시길 바랍니다.

알림

알림이 없습니다