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의 장점
- IoC/DI, AOP 지원 → 보일러플레이트 코드 감소, 비즈니스 로직 집중 가능
- 설정 간소화 → 개발 속도 향상
- 객체지향 설계 원칙 반영 → 유지보수성과 확장성이 뛰어남
- 트랜잭션 관리, 보안(Spring Security), 웹(Spring MVC), 데이터(JDBC, ORM) 지원 → 대규모 애플리케이션 개발 용이
- 방대한 생태계와 커뮤니티 지원 → 문제 해결 및 확장 용이
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 실행 순서
- 사용자 요청 → 브라우저에서 HTTP 요청 전송
- DispatcherServlet → 요청을 가장 먼저 받아 처리하는 프론트 컨트롤러
- HandlerMapping → 요청을 어떤 컨트롤러가 처리할지 매핑
- HandlerAdapter → 컨트롤러 실행을 돕는 어댑터
- Controller → 요청을 분석하고 모델과 상호작용
- Model → 비즈니스 로직 처리 및 데이터 관리
- View & ViewResolver → 뷰를 렌더링하고 최종 HTML 반환
@RestController vs @Controller
애너테이션 용도 반환 데이터 유형 특징
| @Controller | View 반환 | ModelAndView, String (뷰 이름) | HTML 페이지 반환, @ResponseBody 사용 시 JSON 반환 가능 |
| @RestController | REST API 개발 | JSON, XML 등 | @Controller + @ResponseBody 조합, 모든 메서드에서 JSON 반환 |
끝.
'Study > SpringBoot' 카테고리의 다른 글
| SpringBoot + JPA: N+1 문제 발생 원인과 해결 방법 (0) | 2025.03.22 |
|---|---|
| Spring Been 객체와 프록시 패턴 (0) | 2025.03.10 |
| Spring Boot의 AOP 활용 (1) | 2024.12.06 |
| 스프링 빈과 의존관계 (0) | 2024.11.23 |
| 스프링 DB 접근 기술 개요 (2) | 2024.11.14 |