
🌱 스프링(Spring)의 모듈 구조
스프링 프레임워크는 자바 기반의 엔터프라이즈 애플리케이션 개발을 돕기 위한 오픈소스 프레임워크입니다. 이 프레임워크는 모듈화가 잘 되어 있어서, 필요한 기능만 골라서 사용할 수 있는 유연함을 제공합니다. 아래는 스프링의 주요 모듈 구조입니다.
1. Core Container (핵심 컨테이너)
스프링의 핵심 기능을 담당하는 부분으로, DI(의존성 주입)와 IoC(제어의 역전)를 기반으로 애플리케이션의 객체를 관리합니다.
- Core: 스프링 프레임워크의 핵심 기능을 제공합니다. 객체를 생성하고 관리하는 기본 메커니즘을 포함합니다.
- Beans: 객체를 정의하고 설정하는 기능을 제공합니다. 스프링의 BeanFactory를 통해 빈을 생성하고 주입하는 역할을 합니다.
- Context: BeanFactory를 확장한 ApplicationContext를 제공합니다. 국제화, 이벤트 전파, 리소스 로딩 등을 지원합니다.
- SpEL (Spring Expression Language): 런타임 시점에 객체의 프로퍼티나 메서드에 접근할 수 있는 표현식 언어입니다.
2. AOP (Aspect-Oriented Programming)
관심사 분리를 통해 로직을 모듈화하는 기술입니다. 예를 들어 로깅, 보안, 트랜잭션 같은 공통 기능을 비즈니스 로직과 분리하여 구성할 수 있습니다. 스프링 AOP는 프록시 기반으로 동작하며, AspectJ와도 연동할 수 있습니다.
3. 비즈니스 레이어
스프링 프레임워크에서 비즈니스 레이어(Business Layer)는 애플리케이션의 핵심 로직을 담당하는 계층입니다. 흔히 서비스 계층(Service Layer)이라고도 하며, 사용자의 요청에 따라 필요한 처리를 수행하고, 그 결과를 반환하는 역할을 합니다.
스프링은 비즈니스 로직 자체를 모듈로 제공하지는 않지만, 이 레이어를 구현하고 관리하는 데 유용한 기능들을 제공합니다.
- 도메인 로직 처리
예: 주문 생성, 결제 처리, 회원 가입, 포인트 적립 등
핵심적인 규칙과 흐름을 처리합니다. - 데이터 액세스 계층(DAO/Repository)과의 연계
DAO나 Repository로부터 데이터를 조회하거나 저장하고, 이를 기반으로 비즈니스 규칙을 적용합니다. - 컨트롤러와 DAO 사이의 중간 계층 역할
컨트롤러는 요청을 받아 적절한 서비스 메서드를 호출하고, 서비스는 결과를 가공하거나 트랜잭션을 포함한 로직을 실행합니다.
4. Data Access / Integration (데이터 접근 및 통합)
데이터베이스 접근 및 다양한 데이터 소스와의 연동을 지원하는 모듈입니다.
- JDBC: 전통적인 JDBC를 간소화하여 편리하게 사용할 수 있도록 지원합니다. 예외 처리, 연결 관리 등을 자동으로 처리해줍니다.
- ORM: Hibernate, JPA, MyBatis 등과의 연동을 지원합니다.
- JPA: 자바 ORM 표준인 JPA를 보다 쉽게 사용할 수 있도록 도와줍니다.
- Transactions: 선언적 트랜잭션 처리를 지원하며, AOP 기반으로 트랜잭션을 적용할 수 있습니다.
5. Web (웹 계층)
웹 애플리케이션을 개발하기 위한 기능을 제공합니다.
- Web: 서블릿 기반의 웹 기능을 지원합니다.
- Web MVC: 스프링의 대표적인 웹 프레임워크로, DispatcherServlet을 중심으로 동작하는 MVC 아키텍처를 제공합니다.
- Web WebSocket: 실시간 양방향 통신을 위한 WebSocket과 STOMP 프로토콜을 지원합니다.
- Web Reactive: 비동기, 논블로킹 방식의 웹 애플리케이션 개발을 위한 Spring WebFlux를 제공합니다.
6. Test (테스트 지원)
단위 테스트, 통합 테스트 등을 쉽게 작성할 수 있도록 다양한 테스트 지원 기능을 제공합니다. JUnit, TestNG 등과 통합되어 사용할 수 있습니다.
아래는 전체적인 모듈 구조를 요약한 것입니다:
|-- Core Container
| |-- Core
| |-- Beans
| |-- Context
| |-- SpEL
|
|-- AOP
|
|-- Data Access
| |-- JDBC
| |-- ORM
| |-- JPA
| |-- Transactions
|
|-- Web
| |-- Web
| |-- Web MVC
| |-- Web WebSocket
| |-- Web Reactive
|
|-- Test
'Framework > Spring' 카테고리의 다른 글
[ Spring ] 스프링 프로젝트들을 간략하게 알아보기 (0) | 2025.03.23 |
---|---|
[ Spring ] Business Layer - 스프링 모듈의 비지니스 레이어 알아보기 (0) | 2025.03.23 |
[ Spring ] 스프링 프레임워크가 인기가 있는 이유 (0) | 2025.03.23 |
[ Spring ] IntelliJ IDEA/bootRun 실행 하는 방법 (0) | 2024.09.27 |
[ Spring ] Spring 핵심 개념인 DI, AOP에 대해서 간략하게 알아보기 (0) | 2024.09.27 |