스프링 시작
1. 톰캣 시작 - 서버작동
2. web.xml 로딩
3. web.xml에 등록되어 있는 ContextLoaderListener (Java Class) 생성
4. context.xml에 등록되어 있는 Spring Container 구동
5. 클라이언트로부터 웹 어플리케이션 요청이 들어옴
6. DispatcherServlet이 생성
7. DispatcherServlet은 context.xml 로딩
8. 구동 순서
8.1 클라이언트가 해당 어플리케이션에 접근하면 접근한 URL 요청을 DispatcherServlet이 가로챔
8.2 RequestMappingHandlerMapping이 해당 요청을 처리할 컨트롤러를 찾음
8.3 RequestResponseBodyMethodProcessor가 context.xml에 선언해놓은 MessageConverter을 이용하여 요청 바디를 읽음
8.5 DataSourceTransactionManager로 DB접속
8.6 응답 결과를 받아 파라미터에 써줌
8.7 컨트롤러에서 view를 리턴하면 ViewResolver가 먼저 받아 해당 view가 존재하는지 검색
8.8 DispatcherServlet은 ViewResolver를 통해 접두사와 접미사가 붙은 JSP 파일의 이름과 경로를 리터낟아 최종적으로 JSP 실행
단축 순서
1. 클라이언트가 처리할 정보를 서버에 요청함
2. 들어온 요청에 해당하는 컨트롤러가 있는지 확인 (없으면 x)
3. 있으면 해당 컨트롤러에 처리 요청
4. 컨트롤러에서 처리한 결과를 보여주기 위해 view로 리턴
5. 컨트롤러에서 리턴한 view에 해당하는 이름이 있는지 검색 (없으면 x)
6. 있으면 해당 view에 송신
7. 처리 결과가 포함된 view를 클라이언트에 전송
<추후 정리할 JPA관련>
Eager 로딩 : 원하는 정보와 연관되어 있는 정보를 모두 가져온다,
lazy 로딩(지연 로딩) : 원하는 정보에 해당하는 것만 가져온다, 원하는 정보에 해당되는 이름을 프록시 객체로 가져온다,
영속성 컨텍스트는 controller가 재호출 되기 전이 아닌 response 보내기 전에 종료함, 원하는 정보에 해당되는 내용을 다시 가져와야 하는 경우 프록시 객체의 이름을 이용하여 영속성 컨텍스트에서 다시 가져옴
장점 : 영속성 컨텍스트의 종료를 service시작하기 전과 끝난 후가 아닌 Controller가 시작하기 전과 끝에서 해서 원하는 정보를 다시 가져오기 좋다.
단점 : 트랜잭션이 이미 종료 된 후에 다시 가져오는 경우라 CUD가 전혀 작동하지 않는다.
'Java > Spring' 카테고리의 다른 글
Service에서 Argument 사용하기 (0) | 2024.08.07 |
---|---|
Spring boot에서의 logback 설정 (0) | 2024.08.05 |
예외 처리 방법 (0) | 2024.07.07 |
Http Method의 종류와 사용법 (0) | 2022.03.15 |
Springboot + React.js를 쓸 경우 (0) | 2021.11.16 |
댓글