2022/12/15 TIL | Spring MVC, Controller

    반응형

    💭 오늘의 학습 전략

    # Spring MVC

    동작 방식

     구성 요소

    # Controller

     구성 요소

     역할

    Handler method

    ResponseEntity

     실습

    🌼 학습한 것들

    ◾ spring-webmvc

     - Spring 모듈 중 웹 계층 담당하는 몇 가지 중, 특히 서블릿 API 기반으로 요청 처리. Spring MVC

     - 클라이언트 요청 편하게 처리

     서블릿

     - 클라이언트 요청을 처리하도록 특정 규약에 맞춰 java 코드로 작성하는 클래스 파일

     - Apache tomcat은 서블릿 컨테이너

    ◾ Model: 작업 처리 결과 응답 데이터

    ◾ View: 화면에 보여지는 리소스 제공

     - view 형태: HTML 페이지 / PDF등 문서 / XML, JSON 등 특정 포맷

    ◾ Controller: 요청 직접 받는 엔드포인트

     - Controller 요청 수신 -> 비즈니스 로직 -> Model 데이터 -> Controller로 -> View로 전달 -> View 응답 데이터 생성

    ◾ Spring MVC 동작 방식, 구성 요소 자세히

     - 1) 브라우저 -> DispatchServlet (요청 전송)

     - 2) DispatchServlet -> HandlerMapping (Controller 검색)

     - 3) HandlerMapping -> DispatchServlet (Controller 정보 리턴. 핸들러 객체: 핸들러 메서드 정보 포함)

     - 4) DispatchServlet -> HandlerAdapter (Controller 호출 위임)

     - 5) HandlerAdapter -> Controller 호출

     - 6) 비즈니스 로직 수행, Model 데이터 HandlerAdapter로 리턴

     - 7) HandlerAdapter -> DispatchServlet (Model 데이터, View 이름 리턴)

     - 8) DispatchServlet -> ViewResolver (View 검색 요청)

     - 9) ViewResolver -> DispatchServlet (View 정보(객체) 리턴)

     - 10) DispatchServlet -> View (응답 생성 요청)

     - 11) View -> DispatchServlet (응답 생성, 리턴)

     - 12) DispatchServlet -> 브라우저 응답 리턴

     - DispatchServlet이 가장 앞에서 다른 요소와 상호작용,계속해서 위임(delegate): Front Controller Pattern

    ◾패키지 구조

    SpringBoot - 기능 기반 권장

    ◾@SpringBootApplication

     - 자동 구성 매커니즘 활성화 (@EnableAutoConfiguration)

     - @ComponentScan

     - 추가 빈 등록@SpringBootConfiguration

    ◾부트스트랩: 앱 실행 전 여러 설정 작업들을 통해 실행 가능한 앱으로 만드는 단계

     - 클래스 패스 내 Application Context 인스턴스 생성

     - CommandLinePropertySource 등록 (CommandLine 매개변수 -> Spring property)

     - 모든 싱글톤 Bean 로드, AC 갱신

     - CommandLineRunner Bean들 존재하면 Trigger

    🔥 보충이 필요한 것들

    ◾HTTP Header

    ◾Rest Client

    ⬜ MVC 구성요소/동작방식 도식화 해보기

     

    💨 하루를 마치며

    1. 새로운 섹션이 시작 되었다~~

    2. Spring을 사용하는 것도 너무너무 중요하지만 나는 이번 기회를 통해 Spring 구조나 동작에 대해 더 깊게 이해하고 싶은 마음이 크다!

    3. 뭔가 여유를(?) 부리다가 심화 학습을 진행하지 못했다ㅠㅠ 오늘 스터디 전후로 새로운 프로젝트에 기본기능 + 심화기능을 같이 실습해보고 말겠다.

    4. 포스팅 하고싶은 주제를 잔뜩 정리해놨지만 어디서부터 어떻게 해야할지 엄두가 잘 나지 않는다ㅠ 나는 정리해서 포스팅하는 게 꽤 오래걸려서 그게 맞나 싶기도 하다... 고민둥이

    반응형

    '공부기록 > TIL' 카테고리의 다른 글

    2022/12/19 TIL | 서비스 계층  (0) 2022.12.19
    2022/12/16 TIL | API 계층 - DTO  (0) 2022.12.16
    2022/12/14 TIL | 모의 기술면접(2)  (0) 2022.12.14
    2022/12/12-13 TIL | AOP  (0) 2022.12.13
    2022/12/08-09 TIL | DI  (0) 2022.12.09

    댓글