Study/SpringBoot

Spring Boot 주요 모듈 및 MVC 아키텍처

kanado 2025. 3. 6. 18:29

1. Spring Boot 주요 모듈

Spring Boot는 Java 플랫폼을 위한 경량(Lightweight) 및 유연한 애플리케이션 프레임워크다. 기존의 J2EE 솔루션(EJB 등)보다 가벼우면서도 다양한 기능을 제공하여, 필요한 모듈만 선택적으로 사용할 수 있는 장점이 있다.

 

주요 모듈

  • Core Container
    • 스프링의 핵심 모듈이며, IoC(Inversion of Control) 컨테이너(BeanFactory, ApplicationContext)를 제공하여 빈(Bean)의 생명주기를 관리한다.
    • 객체의 생성, 의존성 관리, 생명주기 관리를 담당한다.
  • AOP(Aspect-Oriented Programming)
    • 횡단 관심사(Cross-cutting concerns)를 분리하여 핵심 로직과 분리해 재사용성을 높인다.
  • Data Access/Integration
    • JDBC, ORM, JMS, OXM 등을 통해 데이터베이스 연동 및 트랜잭션 관리를 지원한다.
  • Web
    • 웹 애플리케이션 개발을 위한 모듈(Spring MVC, WebFlux 등)을 제공한다.
  • Messaging
    • 메시징 시스템(JMS, STOMP 등)과의 연동을 지원한다.
  • Test
    • 애플리케이션 테스트를 위한 다양한 기능(JUnit, Mockito, MockMvc, @ContextConfiguration, @MockBean 등)을 제공한다.
  • 추가 확장 모듈
    • Spring Security, Spring Batch, Spring Cloud, Spring Integration 등 다양한 기능을 제공한다.

 

POJO(Plain Old Java Object)

Spring의 POJO 철학은 특정 기술에 종속되지 않고 순수한 Java 객체를 활용하는 것이다. 이를 통해 유지보수성과 확장성을 극대화할 수 있다.

import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String getUserName(Long id) {
        return "User-" + id;
    }
}

위 코드는 @Service 애너테이션을 추가했지만, 클래스 자체는 여전히 POJO이며, IoC 컨테이너를 통해 스프링이 객체를 관리한다.

 

Spring Boot의 장점

  1. IoC/DI, AOP 지원 → 보일러플레이트 코드 감소, 비즈니스 로직 집중 가능
  2. 설정 간소화 → 개발 속도 향상
  3. 객체지향 설계 원칙 반영 → 유지보수성과 확장성이 뛰어남
  4. 트랜잭션 관리, 보안(Spring Security), 웹(Spring MVC), 데이터(JDBC, ORM) 지원 → 대규모 애플리케이션 개발 용이
  5. 방대한 생태계와 커뮤니티 지원 → 문제 해결 및 확장 용이

 

Spring vs Spring Boot

Spring 설정이 많지만 유연한 커스터마이징 가능
Spring Boot 자동 설정 제공, 빠른 개발 가능

 

2. Spring MVC

MVC 아키텍처

MVC 패턴은 소프트웨어 디자인 패턴 중 하나로, 모델(Model), 뷰(View), 컨트롤러(Controller) 세 가지 역할로 애플리케이션을 분리하여 개발하는 방식이다.

  • 모델(Model): 애플리케이션의 데이터 및 비즈니스 로직 담당
  • 뷰(View): 모델 데이터를 바탕으로 UI 생성(HTML/CSS/JS 등)
  • 컨트롤러(Controller): 사용자 입력을 받아 모델과 뷰 간의 상호작용을 관리

 

Spring Boot MVC 특징

  • spring-boot-starter-web 의존성 추가 시 자동 설정
  • 내장 톰캣(서블릿 컨테이너)과 함께 Spring MVC 활성화
  • @Controller, @RestController, @RequestMapping 등을 사용하면 자동으로 핸들러 매핑

 

Spring MVC 실행 순서

  1. 사용자 요청 → 브라우저에서 HTTP 요청 전송
  2. DispatcherServlet → 요청을 가장 먼저 받아 처리하는 프론트 컨트롤러
  3. HandlerMapping → 요청을 어떤 컨트롤러가 처리할지 매핑
  4. HandlerAdapter → 컨트롤러 실행을 돕는 어댑터
  5. Controller → 요청을 분석하고 모델과 상호작용
  6. Model → 비즈니스 로직 처리 및 데이터 관리
  7. View & ViewResolver → 뷰를 렌더링하고 최종 HTML 반환

 

@RestController vs @Controller

애너테이션 용도 반환 데이터 유형 특징

@Controller View 반환 ModelAndView, String (뷰 이름) HTML 페이지 반환, @ResponseBody 사용 시 JSON 반환 가능
@RestController REST API 개발 JSON, XML 등 @Controller + @ResponseBody 조합, 모든 메서드에서 JSON 반환

 

끝.