본문 바로가기

Framework/Spring

[ Spring ] 스프링의 모듈 구조

반응형

🌱 스프링(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
반응형