seaking110 님의 블로그
Spring 3 Layered 본문
Spring Framework란
- Spring 이란
- 자바 기반의 애플리케이션 프레임 워크
- Spring의 특징
- 경량 프레임워크라 필요한 모듈만 선택적으로 사용
- IoC 컨테이너와 DI를 통해 객체의 생성 및 의존성을 관리 <- spring을 쓰는 가장 큰 이유!!!
- Spring Webflux <- 비동기식, Spring Security <- 보안 관련 등 다양한 기술 스택 지원
- JUnit 이나 Mockoto 같은 다양한 테스트 환경을 지원
- Spring의 장점
- 복잡성 관리 : 대규모 애플리케이션의 복잡성을 계층화로 줄임
- 대규모 애플리케이션에서 Controller, Service, Repository 계층으로 구분
- 따라서 유지 보수가 쉬워졌다.
- 유저보수성 : 코드 재사용성과 모듈화를 통해 유지보수 비용 절감
- 생산성 증가 : 개발 시간을 단축시키는 다양한 도구 및 기능 제공
- Spring Boot를 사용하여 애플리케이션을 신속하게 초기화하고 기본 설정을 자동 적용
- REST API를 빠르게 구축하고 데이터베이스 연동을 간단히 처리
- 복잡성 관리 : 대규모 애플리케이션의 복잡성을 계층화로 줄임
- Spring의 역할
- 비즈니스 로직과 기술적 인프라 간의 간극 해소
- 개발자 경험을 향상시키는 도구 제공
- 다양한 애플리케이션 개발 요구 사항 충족
3 Layered Architecture
- 애플리케이션을 계층화하여 모듈화
- 유지보수성과 확장성 향상
3 Layer 구성 요소

- Presentation layer : 사용자와의 상호작용 (Controller)
- Business Logic Layer : 애플리케이션의 핵심 로직 처리 (Service)
- Date Access Layer : 데이터 베이스와 상호작용 (Repository, Entity)
- DTO (date Transfer Object) : 프로세스 사이에서 데이터를 전송하는 객체
- Json 형태로 데이터 전달
- 이점
- 각 계층 간의 책임 분리
- 테스트와 디버깅 용이성 증가
MVC와 3Layered Architecture 차이
|
기준
|
MVC
|
3 Layered Architecture
|
|
초점
|
MVC는 클라이언트와 서버간의 구조 관점에서 접근한 개념
|
Spring 3 Layer 는 서버 개발 관점에서 각 계층 별로 역할을 분리하는 개념
|
|
구성 요소
|
Model, View, Controller
|
Presentation, Business Logic, Data Access
|
|
적용 범위
|
웹 애플리케이션의 UI 계층
|
전체 애플리케이션 구조
|
|
Controller 역할
|
요청을 처리하고 Model과 View를 연결
|
Presentation Layer의 일부로 작동
|
|
데이터와 비즈니스 로직
|
Model이 데이터와 로직 모두 담당
|
Business Logic Layer가 비즈니스 로직 전담
|
SpringMVC
- 사용자 요청 처리와 응답 생성에 주요 목적을 가짐
- Spring MVC의 주요 목적은 클라이언트(사용자)와 서버 간의 상호작용을 관리하는 것입니다. 이를 통해 웹 애플리케이션이 사용자의 요청을 받아 처리하고, 그 결과를 사용자에게 적절한 형식으로 반환하는 과정을 쉽게 구현할 수 있습니다
Spring 3 Layer
- 애플리케이션의 구조화 및 계층화에 주요 목적을 가짐
- Spring 3 Layer 는 애플리케이션을 세 개의 주요 계층으로 나누어 각 계층이 독립적으로 동작할 수 있도록 구조화하는 데 초점을 맞추고 있습니다. 이를 통해 애플리케이션의 유지보수성과 확장성을 향상시킬 수 있습니다.
- 개발을 하며 항상 Cost를 신경써야함
- 인프라에서 가장 비싼건 DB -> 서버보다 수십배차이
- 따라서 db에서 쿼리로 처리하는 것 보단 받아와서 Service 쪽에서 비즈니스 로직을 실행하자
'Today I Learned' 카테고리의 다른 글
| Spring Annotation과 Request Mapping (1) | 2025.01.24 |
|---|---|
| 이론 (1) | 2025.01.23 |
| Spring 입문! (0) | 2025.01.22 |
| 백엔드 개발자 필수 지식 (0) | 2025.01.20 |
| 키오스크 과제 트러블 슈팅 (0) | 2025.01.20 |