TIL

2021.08.09~11 기록장

Gisungcu 2021. 8. 8. 22:26

ToDo

  • 알고리즘 문제
  • 토비의 스프링

Done

  • 토비의 스프링

Weekly goal

  • 책 읽기
  • 토비 스프링 코딩
  • 7월 회고 쓰기

 

토비의 스프링

 

397p.

스프링 mvc가 지원하는 컨트롤러의 종류는 네 가지, 어댑터도 네 가지,

모두 디스 패쳐 서블릿이 지원하는 전략이다.

자주 쓰이는 어댑터로는 AnnotationMethodHandlerAdapter가 있다. 

특정 컨트롤러 타입이 정해져 있지 않고 메서드, 클래스 등에 붙은 어노테이션과 몇 개의 정보들로 컨트롤러를 찾는다.

 

414p.

핸들러 인터셉터는 디스 패쳐 서블릿이 호출하기 전과 후에 참조하거나 가공하는 역할을 한다.

핸들러 매핑은 디스 패쳐 서블릿으로부터 매핑 작업을 요청받으면 그 결과로 핸들러 실행 체인을 돌려줌.

서블릿 필터와 다른 점은? 인터셉터는 HttpServleRequest와 HttpServletResponse뿐 아니라, 실행될 컨트롤러 빈 오브젝트, 발생한 예외 등을 제공받는다.

또 인터셉터 자체가 빈이기에 DI를 통해 다른 빈을 활용 가능하다.

 

aop로 인터셉터를 대체하면? 가능은 하지만 포인트 컷을 통해 하나하나 분리하는 것은 쉽지 않아 보인다.

 

mvc패턴 중에 뷰 부분을 보면 json을 사용하는 view가 존재한다, mappingJacksonView인데 뷰를 직접 사용하는 것보다 컨버터를 사용하는 법을 애용한다.

 

 

446p.

뷰 중에 HandlerExceptionResolver는 컨트롤러의 작업 중에 발생한 예외를 어떻게 처리할지 결정하는 전략이다.

컨트롤러나 그 뒤의 계층에서 던져진 예외는 디스 패쳐 서블릿이 일단 전달받은 뒤에 다시 서블릿 밖으로 던져서 서블릿 컨테이너가 처리하게 된다. 근데. 핸들러 예외 리졸버가 존재한다면 디스 패쳐 서블릿은 리졸버에게 먼저 전달을 한다. 받은 예외는 예외 리졸버가 밖으로 던지지 않고 처리한다.