Spring Framework 의 구조

이영재·2024년 10월 31일
1

Spring

목록 보기
11/20

0. Framework 이란?

Spring은 일반적으로 Spring 프레임워크를 줄여 부르는 말이다. Spring은 많이 들어봤는데 Framework이란 뭘까?

Framework이란?
Framework는 여러가지 모듈이 합쳐진 것이다. 동일한 말로 각각이 완벽한 Component의 집합이자 library의 모듈화 이다. 오늘 소개 할 Spring Framework는 다음과 같은 형태로 구성되어있다.

  • Spring Framework : 다양한 모듈(Core, AOP, Web, Data Access 등)로 구성되어 있어 애플리케이션의 세부 설정을 자유롭게 할 수 도록 도와줌
  • Spring : Spring Framwork을 줄여서 Spring 이라고 말한다.
  • Spring boot : Spring 프레임워크를 기반으로 자동 설정(Auto Configuration)의존성 관리(Starter Dependencies) 를 제공하여 개발자가 빠르게 애플리케이션을 시작할 수 있도록 도와준다.
    • 내장 웹 서버(Embedded Server)를 통해 애플리케이션을 단일 JAR 파일로 배포/실행 가능
    • 기본적인 설정을 자동으로 구성

1. Spring Framework

각 모듈은 특정한 기능을 제공하여 유연하게 필요한 기능만 선택해 사용할 수 있다. Spring의 전체 구조는 크게 다섯 가지 핵심 모듈로 나눌 수 있다.

1.1 Core Container

  • Core: Spring의 핵심을 이루는 부분으로, 의존성 주입(DI)과 IoC(Inversion of Control) 컨테이너를 제공하여 객체 생명 주기와 의존성을 관리한다.
  • Beans : Spring의 BeanFactory를 통해 애플리케이션 내의 객체를 관리하는 모듈
  • Context : Spring의 모든 기능을 포함하는 고급 컨테이너로, Spring MVC와 AOP 기능을 포함해 Bean의 설정과 관리에 필요한 기능을 제공
  • Expression Language (SpEL): Spring에서 사용할 수 있는 표현식 언어로, 복잡한 설정을 간편하게 처리할 수 있다.

1.2 AOP and Instrumentation

  • AOP (Aspect-Oriented Programming): 횡단 관심사(예: 로깅, 보안, 트랜잭션 관리)를 모듈화하여 비즈니스 로직과 분리
  • Aspects: AspectJ와의 통합을 통해 강력한 AOP 기능을 제공하고, 코드 내 특정 지점에 부가 기능을 주입할 수 있게한다.
  • Instrumentation: 클래스 로더를 통한 특정 객체 조작과 같은 작업을 지원

1.3 Data Access / Integration

  • JDBC: Spring의 JDBC 모듈은 데이터베이스 접근을 간편하게 해주며, 예외 처리를 표준화하고 리소스 관리를 자동화하여 데이터베이스 관련 코드의 가독성을 높인다.
  • ORM (Object-Relational Mapping): JPA, Hibernate, MyBatis 등의 ORM 프레임워크와 통합하여 데이터베이스 매핑 작업을 간편하게 한다.
  • OXM (Object XML Mapping): XML 데이터를 Java 객체로 변환할 수 있도록 지원
  • JMS (Java Messaging Service): 메시징 시스템을 통해 비동기식 메시징을 지원하여 시스템 간의 비동기 통신을 처리할 수 있게 한다.
  • Transactions: 트랜잭션 관리를 표준화하여 데이터의 일관성을 보장하고 코드 복잡성을 줄인다.

1.4 Web

  • Web: 웹 애플리케이션 개발을 지원하는 핵심 모듈로, HTTP 요청 및 응답을 처리하는 필터와 서블릿을 포함한다.
  • Web MVC: Spring MVC 모듈로, Model-View-Controller 패턴을 기반으로 요청을 처리하고 응답을 생성하는 데 사용.
  • WebSocket: WebSocket을 통해 양방향 통신을 지원하여 실시간 애플리케이션 개발을 돕는다.
  • WebFlux: 비동기식 프로그래밍을 지원하는 모듈로, 리액티브 프로그래밍 방식에 맞추어 데이터 스트림을 처리한다.

1.5 Test

  • Test: JUnit, TestNG 등과 통합하여 애플리케이션을 테스트할 수 있도록 지원.
    • 각종 모듈에 대한 테스트를 손쉽게 작성할 수 있는 환경을 제공.

Spring Framework의 구성요소를 살펴보았다. 여기서 이 핵심 모듈 1가지로도 매우 방대한 내용이 들어있다. 모든 모듈을 자유자재로 사용할 수 있다면 좋겠지만 쉽지 않다. 하지만 이 모듈들이 어떻게 상호작용하고 어떤 기능을 갖고 있는지는 알면 매우 좋을거 같다.

0개의 댓글