스프링부트 개념정리 with JPA 12강 - DispatcherServlet은 무엇인가요?
https://jwdeveloper.tistory.com/291
web.xml에 다 정의하기 힘들기 때문에 request 요청을 받아서 필요한 클래스에 보내주는 역할
이 때 새로운 요청이 생기기 때문에 request, response 객체가 새로 new 될 수 있다.
이러면 기존 내용이 없어지기 때문에 기존 request를 유지해주기 위해
RequestDispatcher가 필요하다.
필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.
리퀘스트디스패처를 이용해야 페이지간 데이터 이동이 가능하다.
DispatcherServlet == FrontController 패턴 + RequestDispatcher
스프링에 DispatcherServlet이 있어서 FrontController 패턴, RequestDispatcher를 직접 구현할 필요가 없다.
JSP에서는 직접 짜야 하는데 스프링에서는 직접 짤 필요가 없다.
jsp vs 스프링 : https://velog.io/@asas33/웹개발-jsp와-servlet..-이들과-spring사이의-관계-궁금한건-못참아
스프링부트 개념정리 with JPA 13강 - ApplicationContext가 무엇인가요?
디스패처서블릿 == 주소분배 역할
근데 주소를 분배하려면 분배하기 전에 클래스를 메모리에 띄워야 한다(new를 해야한다)
디스패치서블릿은 클래스를 띄우는 역할도 한다
어노테이션을 보고 메모리에 띄울 애 띄우지 않을 애를 구분한다
모든 애들이 공통적으로 써야 하는 것 ex) DB에 관련된 것
컨텍스트로더리스너가 띄운다.
ContextLoaderListner
가 먼저 실행되고 DispatcherServlet
이 실행된다.
root-applicationContext
는 servlet-applicationContext
보다 먼저 로드된다.
그렇기 때문에 ContextLoaderListner
가 띄운 애들은 DispatcherServlet
이 메모리에 띄운 애들에 접근 못함.
여기에 등록하면 초기에 메모리에 로드되지 않고 필요할 때 getBean() 메소드를 통하여 메모리에 로드할 수 있다.
미리 로드하지 않고 필요시에 호출하여 로드하기 때문에 lazy-loading이 된다.
스프링부트 강좌 with JPA 14강(마지막) - 응답(Response)하는 방법
https://magpienote.tistory.com/156
html파일을 응답하게 되면 ViewResolver가 관여
data를 응답하게 되면 MessageConverter가 작동.