ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS 100문 100답 Q.006~008(filter, interceptor, AOP)
    카테고리 없음 2022. 8. 22. 13:15

    키워드 풀이

    Interceptor와 Filter는 Servlet 단위에서 실행되며 AOP는 메소드 앞에서 Proxy패턴의 형태로 실행.

    요청이 들어오면 Filter => Interceptor => AOP => Interceptor => Filter 순으로 진행.

    1. 서버를 실행시켜 서블릿이 올라오는 동안에 init이 실행되고, 그 후 doFilter가 실행
    2. 컨트롤러에 들어가기 전 preHandler가 실행
    3. 컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행
    4. 서블릿 종료 시 destroy가 실행

     

    006. Filter 란 무엇인가?

    요청과 응답을 거른뒤 정제하는 역할.

    서블릿 필터는 DispatcherServlet 이전에 실행되며 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 체크를 수행한다.

    그리고 자원의 처리가 끝난 후 응답내용에 대해서도 변경하는 처리를 할 수 있으며, 보통 web.xml에 등록하고 일반적으로 인코딩 변환 처리, xss방어 등의 요청에 대한 처리로 사용한다.

    • init() - 필터 인스턴스 초기화
    • doFilter() - 전/후 처리
    • destroy() - 피러 인스턴스 종료

    007. Interceptor 란 무엇인가?

    필터는 스프링 컨텍스트 외부에 존재하며 스프링과 무관한 자원에 대해 동작한다면 인터셉터는 스프링의 DispatcherServlet이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 스프링 컨텍스트 내부에서 Controller에 관한 요청과 응답에 대해 처리한다.

    스프링의 모든 빈 객체에 접근할 수 있으며 여러개를 사용할 수 있고 로그인 체크, 권한체크, 프로그램 실행시간 계산작업, 로그 확인 등의 업무를 처리한다

    • preHandler() - 컨트롤러 메서드가 실행되기 전
    • postHandler() - 컨트롤러 메서드 실행직 후 view페이지 렌더링 되기 전
    • afterCompletion() - view페이지가 렌더링 되고 난 후

      •  
    •  

    008. AOP(Aspect-Oriented Programming)란 무엇인가?

    OOP로 독립적으로 분리하기 어려운 부가 기능을 모듈화 하는 방식. 핵심 비즈니스 로직과 부가 기능 Aspect를 분리하는 등 OOP를 보완하는 역할을 한다.

    Aspect는 부가될 기능을 정의한 Advice와, 해당 Advice를 어디에 적용할지를 결정하는 Pointcut 정보를 가지고 있다.

    AOP의 장점

    • 공통 관심 사항을 핵심 관심사항으로부터 분리시켜 핵심 로직을 깔끔하게 유지할 수 있다.
    • 그에 따라 코드의 가독성, 유지보수성 등을 높일 수 있다.
    • 각각의 모듈에 수정이 필요하면 다른 모듈의 수정 없이 해당 로직만 변경하면 된다.
    • 공통 로직을 적용할 대상을 선택할 수 있다.

     

    참고자료

    스스로 생각해보기!

    댓글

Designed by Tistory.