스프링 MVC 정리

Sorbet·2021년 11월 2일
0

챕터 5 정리

Spring MVC 기능 정리(결과물, 앞으로 이렇게 쓰면 됨)

  • Model 파라미터를 사용하자 : HttpServletRequest 이런걸로 리턴 안해줘도 된다
  • ViewName 직접 반환 : 뷰의 논리 이름으로 반환하면 알아서 물리이름을 찾아 변환해 랜더링한다.
    • 기존 ModleAndView 객체로 반환하지 않아도 됨
  • @RequestMapping : 어노테이션 기반의 핸들러+맵퍼 사용이 가능하다
    • @GetMapping, @PostMapping은 http 메서드까지 특정한것일뿐, Reques
  • @Controller 어노테이션
    • 스프링이 자동으로 스프링 빈으로 등록한다. (내부에 @Component 애노테이션이 있어서 컴포넌트스캔됨)

스프링 MVC 내부

  • 스프링 부트가 자동 등록하는 뷰 리졸버

    • Bean Name 리졸버
    • JSP 리졸버
  • 가장 중요한 두가지는 맵핑, 어댑터

    • 맵핑 : URI 주소를 누가 처리해줄껀지 찾아주는 아이
    • 어댑터 : 핸들러를 실행할 수 있는 어댑터, 핸들러 구현이 다 다르므로 구현체마다의 어댑터가 필요하다

맵핑 동작과정

  • HandlerMapping 을 순서대로 실행해서, 핸들러를 찾는다
    • 먼저 Bean이름으로 핸들러를 찾아야 하기 때문에 이름 그대로 빈 이름으로 핸들러를 찾아주는

BeanNameUrlHandlerMapping 가 실행에 성공하고 핸들러인 OldController 를 반환

어댑터 동작과정

  • 조회 - 어댑터가 핸들러 호출 - 어댑터 동작
  • 자세한건 117페이지

스프링 MVC 동작 순서 : DispacherServlet.doDispatch()

  • 컨트롤러를 찾아서
  • 컨트롤러(핸들러) 어댑터 조회해서 실행시킬수 있는 어댑터를 찾아내서
  • 핸들러(컨트럴ㄹ) 어댑터를 실행
  • 어댑터가 실제 핸들러를 실행한다.
  • ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해 리턴
  • viewResolver 호출: 뷰 리졸버를 찾고 실행
    • JSP의 경우: InternalResourceViewResolver 가 자동 등록되고, 사용된다.
  • View 반환: 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환
    • JSP의 경우 InternalResourceView(JstlView) 를 반환하는데, 내부에 forward() 로직이 있다.
  • 뷰 렌더링: 뷰를 통해서 뷰를 렌더링 한다.

결론

- 개발자가 편하게 하기 위해서 프레임워크를 잘 만들어놨다

- 개발하기 어렵게 서비스를 만들면 유저들은 편하다

  • 위에 "스프링 MVC 동작 순서" 를 개발하기 편하고 확장하기 쉽게 구현해놓은게 스프링 mvc이다
profile
Sorbet is good...!

0개의 댓글