[스프링부트 개념정리 with JPA] 12, 13, 14강 完

오젼·2024년 1월 5일
0

12강

스프링부트 개념정리 with JPA 12강 - DispatcherServlet은 무엇인가요?

FrontController 패턴


https://jwdeveloper.tistory.com/291

web.xml에 다 정의하기 힘들기 때문에 request 요청을 받아서 필요한 클래스에 보내주는 역할

이 때 새로운 요청이 생기기 때문에 request, response 객체가 새로 new 될 수 있다.
이러면 기존 내용이 없어지기 때문에 기존 request를 유지해주기 위해
RequestDispatcher가 필요하다.

RequestDispatcher

필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.

리퀘스트디스패처를 이용해야 페이지간 데이터 이동이 가능하다.

DispatcherServlet

DispatcherServlet == FrontController 패턴 + RequestDispatcher

스프링에 DispatcherServlet이 있어서 FrontController 패턴, RequestDispatcher를 직접 구현할 필요가 없다.

JSP에서는 직접 짜야 하는데 스프링에서는 직접 짤 필요가 없다.

jsp vs 스프링 : https://velog.io/@asas33/웹개발-jsp와-servlet..-이들과-spring사이의-관계-궁금한건-못참아

13강

스프링부트 개념정리 with JPA 13강 - ApplicationContext가 무엇인가요?

DispatcherServlet

디스패처서블릿 == 주소분배 역할

근데 주소를 분배하려면 분배하기 전에 클래스를 메모리에 띄워야 한다(new를 해야한다)
디스패치서블릿은 클래스를 띄우는 역할도 한다

어노테이션을 보고 메모리에 띄울 애 띄우지 않을 애를 구분한다

ContextLoaderListner

모든 애들이 공통적으로 써야 하는 것 ex) DB에 관련된 것
컨텍스트로더리스너가 띄운다.

ContextLoaderListner가 먼저 실행되고 DispatcherServlet이 실행된다.
root-applicationContextservlet-applicationContext보다 먼저 로드된다.
그렇기 때문에 ContextLoaderListner가 띄운 애들은 DispatcherServlet이 메모리에 띄운 애들에 접근 못함.

Bean Factory

여기에 등록하면 초기에 메모리에 로드되지 않고 필요할 때 getBean() 메소드를 통하여 메모리에 로드할 수 있다.
미리 로드하지 않고 필요시에 호출하여 로드하기 때문에 lazy-loading이 된다.

14강

스프링부트 강좌 with JPA 14강(마지막) - 응답(Response)하는 방법

https://magpienote.tistory.com/156

  1. 톰캣이 실행되면 문지기가 web.xml 파일을 읽고 자기가 해야할 일을 함.
    2, 3, 4. 이 때 DB 관련된 애들을 메모리에 띄움(ContextLoaderListner)
  2. Client로부터 request가 오면
    6, 7, 8. DispatcherServlet이 문지기가 해야할 역할을 조금 분배를 함. 프론트컨트롤러패턴으로. 관련된 애들을 메모리에 띄우고 주소분배를 함.

응답

html파일을 응답하게 되면 ViewResolver가 관여
data를 응답하게 되면 MessageConverter가 작동.

0개의 댓글