본문 바로가기

Spring

[Spring] Spring에 대하여 / MVC / 3 Layered Architecter

프레임워크 VS 라이브러리

개발을 하다 보면 반복적인 작업과 비효율적인 코드로 인한 불편함이 발생한다.

이를 해결하기 위해 개발자들이 자주 사용하는 기능들을 묶은 도구들이 바로 프레임워크와 라이브러리다.

 

프레임워크

  • 개발에 필요한 구조와 흐름을 제공하는 개발 틀
  • 개발자는 이 틀에 맞춰 코드를 작성
  • 장점: 일관성, 생산성, 보안 기능 제공, 테스트 환경 지원, 풍부한 커뮤니티와 문서
  • 단점: 진입 장벽 높음, 버전 호환 이슈, 자유도 제한

 

라이브러리

  • 필요한 클래스나 기능을 모아 놓은 코드의 집합 (도구 모음)
  • 개발자가 원하는 시점에 필요한 기능을 선택적으로 호출 가능
  • 장점: 생산성 향상, 검증된 품질
  • 단점: 지원 중단 가능성, 버전 충돌, 호완성 문제, 기능 과잉, 어려운 내부 구현 수정

 

Spring Framework

Spring Framework는 복잡한 서버 성능, 안정성, 보안 문제를 대신 처리해 줘서, 개발자가 비즈니스 로직에만 집중할 수 있게 만든 자바 개발 환경이다.

 

Spring Framework의 특징

  • 애플리케이션의 다양한 구성 요소를 유연하게 연결하고 관리할 수 있도록 해준다.
  • 누구나 사용할 수 있는 오픈소스
  • 모듈화되어 있어 필요한 기능만 선택적으로 사용 가능
  • 자바의 객체 지향 개념(캡슐화, 상속, 추상화, 다형성)을 잘 살려낸 프레임워크이다.

 

Spring Boot

하지만, Spring Framework도 초기 설정과 구성 파일이 복잡하고 방대하다.

그리하여 Spring Framework를 더 간편하게 사용할 수 있도록 도와주는 스타터 도구인 Spring Boot가 개발되었다.

 

Spring Boot의 특징

  • 자동 구성(Auto-configuration) 기능 제공 → 복잡한 설정 없이도 개발 가능
  • 내장 WAS(Tomcat) 제공 → 별도 서버 설정 없이 애플리케이션 실행 가능
  • spring-boot-starter-web만 추가해도 웹 앱에 필요한 종속성과 설정 자동 구성
  • 라이브러리 버전을 명시하지 않아도 자동으로 호환 가능한 버전 적용 (⚠️ 단, 버전 문제를 100% 해결해 주는 건 아님)

 

Spring MVC

Spring MVC는 MVC 디자인 패턴을 기반으로 하는 Spring의 웹 애플리케이션 개발 프레임워크이다.

 

1) Model (모델)

  • 데이터와 비즈니스 로직을 다룬다.
  • 사용자의 정보(이름, 나이, 주소 등)를 저장하거나 데이터베이스에서 가져오는 작업을 담당한다.

 

2) View (뷰)

  • 사용자가 보게 될 화면을 담당한다.
  • 화면에 출력될 내용(HTML, 텍스트 등)을 만들고, 사용자에게 보여주는 작업을 담당한다.

 

3) Controller (컨트롤러)

  • 모델과 뷰를 연결하는 다리 역할을 한다.
  • 사용자의 요청을 받아 그 요청을 처리하고 결과를 뷰에게 전달하는 작업을 담당합니다.

 

3 Layered Architecter

3 Layer 는 서버 개발 관점에서 각 계층 별로 역할을 분리하는 개념을 뜻한다.

 

1) Presentation Layer (프레젠테이션 레이어) Controller

  • 사용자가 입력한 요청이 유요한 요청인지 검사하고 필터링하는 역할
  • 사용자의 요청을 받고, 서비스로 데이터를 전달하는 역할
  • 구성 요소: @Controller 또는 @RestController (@Controller + @ResponseBody)

 

2) Business Logic Layer (서비스 레이어) Service

  • 사용자가 요청한 비즈니스 로직을 실질적으로 처리하고, 필요한 데이터를 리포지토리에게 요청하는 역할
  • 구성 요소: @Service

 

3) Data Access Layer (데이터 접근 레이어) Repository

  • 데이터베이스에서 실제 데이터를 가져오거나, 데이터를 저장, 수정, 삭제하는 역할
  • 구성 요소: @Repository
                     (JPA, Hibernate, MyBatis 등과 같은 ORM 프레임워크를 사용해 데이터베이스와 상호작용)

 

※ DTO : 계층간 데이터 전달을 위해 사용되는 객체

    Entity : 데이터베이스 테이블과 매핑되는 도메인 객체

'Spring' 카테고리의 다른 글

[Spring] 요청 · 응답 데이터  (0) 2025.05.12
[Spring] Spring에서 Annotation을 사용하는 이유와 Spring Bean 관리  (0) 2025.05.12
[Spring] 웹  (0) 2025.05.09
[Spring] 웹 용어 정리  (0) 2025.05.08
[Spring] HTTP와 API  (0) 2025.05.08