danc
danc*dev
danc
  • 분류 전체보기
    • codestates_BE_bootcamp39
      • 주단위 일기
      • 회고
    • programming
      • JAVA
      • SPRING
      • GENERAL
      • LINUX
      • ALGORITHM
      • ERROR_HANDLING
    • web
      • NETWORK
      • DB
      • HTML
      • CSS
    • kr
    • nz

최근 글

인기 글

태그

  • 회고
  • AOP
  • css
  • HTTP
  • TIL
  • 일기
  • TIL 일기
  • React에서 Authorization헤더
  • 윈도우 11 우분투
  • 코드스테이츠 백엔드
  • TIL일기
  • 코드스테이츠

최근 댓글

티스토리

hELLO · Designed By 정상우.
danc

danc*dev

Spring MVC
programming/SPRING

Spring MVC

2022. 7. 13. 22:25

Spring MVC 

- Spring의 모듈중 웹 계층을 담당하는 모듈 중 하나.  (웹 프레임워크의 한 종류)
- 서블릿(Servlet)API를 기반으로 클라이언트의 요청을 처리하는 모듈 

서블릿(Servlet)

클라의 요청을 처리하도록 특정 규약에 맞춰 Java파일로 작성하는 클래스 파일
(아파치 톰캣 -> 이런 서블릿들이 웹 application으로 실행하게 해주는 서블릿 컨테이너) 

 

>> 클라이언트의 요청을 편리하게 처리해줌 


MODEL

클라가 요청한 작업을 처리하고 응답으로 돌려준다.
이때 응답으로 돌려주는 작업의 처리결과 : Model

클라의 요청을 구체적으로 처리하는 영역을 서비스 계층 (Service Layer) 

실제 요청을 처리하기 위해 Java코드로 구현한 것을 비즈니스 로직(Business Logic)이라 한다. 

 

VIEW

Model의 데이터를 이용해서 웹 브라우저 같은 클라 애플리케이션 화면에 보이는 리소스(Resource)를 제공

view의 형태: 

  • HTML 페이지 출력
  • PDF, Excel 등의 문서형태로 출력
  • XML, JSON등 특정 형식의 포맷으로 변환 

과정에서 배울 view형태는 Model 데이터를 JSON 프로토콜 데이터로 변환하는 것 

 

CONTROLLER

- 클라이언트 측의 요청을 직접적으로 전달받는 Endpoint

- Model과 View의 중간에서 상호작용 역할 

클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후에 Model데이터가 만들어지는데
모델 데이터를 View로 전달하는 역할 

 

Flow 정리

  1. 클라의 요청 데이터 전송
  2. Controller가 요청 데이터 수신 
  3. 비즈니스 로직 처리
  4. Model 데이터 생성
  5. Controller에게 Model데이터 전달
  6. Controller가 View에게 Model 데이터 전달
  7. View가 응답 데이터 생성 

 


Spring MVC workflow

https://terasolunaorg.github.io/guideline/5.0.1.RELEASE/en/_images/RequestLifecycle.png

Dispatcher Servlet은 직접 요청을 처리하는 것이 아니라 다른 구성 요소들에게 권한을 위임한다.

이거 해줘 저거 해줘라고 대신 요청해주는 역할이고 이렇게 Dispatcher Servlet이
application 최 앞단에 배치되어 상호작용을 하면서 클라이언트의 요청을 처리하는 방식을
Front Controller Pattern이라고 한다. 

 


패키지 구조 

Springboot기반 application에서 주로 사용되는 자바 패키지 구조 2가지

결론적으로 애플리케이션의 요구 사항이나 특성에 맞도록 상황에 맞춰 적절하게 사용하면 된다.

하지만 기능 기반 패키지 구조가 권장된다. 


기능 기반 패키지 구조

package-by-feature

*구현해야 하는 기능을 기준으로 패키지 구성

*나누어진 패키지 안에 하나의 기능을 완성하기 위한 계층별
(API계층, 서비스계층, 데이터 액세스 계층) 클래스들이 모여있다. 

*테스트와 리팩토링이 용이 / 향후 마이크로 서비스 시스템으로의 분리가 상대적으로 용이하다.

*권장되는 패키지 구조 

 


계층 기반 패키지 구조

package-by-layer

패키지를 하나의 layer로 보고 클래스들을 계층별로 묶어 관리하는 구조 

API계층 - [ controller / dto 패키지]

비즈니스 계층 - [ model / service 패키지] 

데이터 액세스 계층 - [ repository 패키지]


저작자표시 (새창열림)

'programming > SPRING' 카테고리의 다른 글

싱글톤 사용시 주의사항  (0) 2022.08.03
[Spring Security] - 필터에 대한 개념  (0) 2022.07.03
Spring Data JDBC 간략 요약  (0) 2022.06.30
JDBC 간단 요약  (0) 2022.06.30
예외 처리  (0) 2022.06.29
    'programming/SPRING' 카테고리의 다른 글
    • 싱글톤 사용시 주의사항
    • [Spring Security] - 필터에 대한 개념
    • Spring Data JDBC 간략 요약
    • JDBC 간단 요약
    danc
    danc
    Backend 개발자를 목표로 공부 중 입니다.

    티스토리툴바