본문 바로가기
스프링 공부

스프링 프레임 워크 구조 정리

by 코딩마스터^^ 2024. 8. 9.

https://velog.io/@6792kjs/spring-%EA%B8%B0%EC%B4%88%EC%A7%80%EC%8B%9D-%ED%95%99%EC%8A%B5%EC%A0%95%EB%A6%AC#0-spring-framework%EC%9D%98-%EA%B5%AC%EC%A1%B0

 

spring 기초지식 학습정리

자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크로 엔터프라이즈급 어플리케이션 개발을 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션.

velog.io

0. spring framework의 구조

  • spring core : spring container를 의미.
    • continer는 spring framework의 핵심이며, 그 중 핵심은 Bean Factory Container임.
      • Bean Factory는 IOC패턴을 적용하여 객체 구성부터 의존성처리까지 모든 일을 처리하는 역할을 함.
  • spring Context
    : spring framework의 context 정보들을 제공하는 설정 파일.
    • spring context에는 JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함.
  • spring AOP
    : spring Framework에서 관점지향 프로그래밍을 할 수 있고, AOP를 적용할 수 있게 도와주는 Module임.
  • spring DAO
    : Data Access Object의 약자로 Database Data에 접근하는 객체. Spring JDBC DAO는 추상 레이어를 지원하며, 코딩이나 예외처리하는 부분을 간편화시켜 일관된 방법으로 코드를 짤 수 이쎅 도와줌.
  • spring ORM
    : Object relational mapping의 약자로, 간단히 객체와의 관계 설정을 하는 것. Spring에서는 Ibatis, Hibernate, JDO 등 인기있는 객체 관계형 도구를 사요할 수 있도록 지원.
  • spring Web
    : spring에서 Web context module은 Application module에 내장되어 있으며, Web기반의 응용프로그램에 대한 context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원.
  • spring MVC
    : Model2 구조로 Application을 만들 수 있도록 지원. MVC(Model-View-Controlller) 프레임워크는 웹 응용 프로그램을 작성하기 위한 완전한 기능을 갖춘 MVC를 구현함.

 

스프링 프레임워크의 구조는 여러 모듈과 계층으로 구성되어 있습니다. 각 계층은 특정한 기능을 담당하며, 전체적으로 애플리케이션 개발을 지원하는 강력한 플랫폼을 제공합니다. 스프링 프레임워크의 주요 구성 요소와 그들의 역할을 이해하는 것은 중요합니다.

 

 

1. 스프링 프레임워크의 주요 모듈

스프링 프레임워크는 크게 다음과 같은 모듈로 구성됩니다:

  1. Core Container:
    • Spring Core: 스프링 프레임워크의 핵심 모듈로, IoC(제어의 역전)와 DI(의존성 주입)를 제공.
    • Spring Beans: 빈(Bean)의 정의와 설정을 관리하는 모듈.
    • Spring Context: 애플리케이션의 설정을 관리하며, 스프링 빈들을 관리하는 고급 기능을 제공.
    • Spring Expression Language (SpEL): 강력한 표현식 언어로, 런타임에 객체 그래프를 쿼리하고 조작하는 데 사용.
  2. Data Access/Integration:
    • JDBC: JDBC를 이용한 데이터베이스 접근을 쉽게 하기 위한 기능을 제공.
    • ORM: Hibernate, JPA, MyBatis 등의 ORM(Object-Relational Mapping) 프레임워크와의 통합을 지원.
    • Transaction Management: 선언적 트랜잭션 관리를 지원하여, 데이터 일관성을 유지.
    • Spring Data: 데이터 접근을 추상화하여 일관된 데이터 접근 기술을 제공.
  3. Web:
    • Spring MVC: Model-View-Controller 아키텍처를 기반으로 한 웹 애플리케이션 개발을 지원.
    • Spring WebFlux: 리액티브 프로그래밍 모델을 지원하는 비동기 웹 프레임워크.
    • WebSocket: 실시간 웹 애플리케이션을 위한 WebSocket 지원.
  4. AOP (Aspect-Oriented Programming):
    • 횡단 관심사(Cross-Cutting Concerns)를 모듈화하여, 비즈니스 로직과의 결합도를 줄임. 예를 들어, 로깅, 트랜잭션 관리 등이 여기에 포함됨.
  5. Instrumentation:
    • 클래스 로더를 통해 특정 라이브러리와 통합하는 데 사용됨.
  6. Messaging:
    • JMS(Java Message Service) 및 기타 메시징 프로토콜을 사용하여 비동기 메시징 기능을 제공.
  7. Test:
    • JUnit과 TestNG를 기반으로 한 테스트 모듈로, 애플리케이션의 테스트를 쉽게 작성할 수 있도록 지원.

2. 스프링 프레임워크의 계층적 구조

스프링의 계층적 구조는 다음과 같은 주요 계층으로 나눌 수 있습니다:

  1. Presentation Layer (프레젠테이션 계층):
    • 사용자와 직접 상호작용하는 부분. 주로 Spring MVC, Spring WebFlux 등을 사용하여 구현됨.
  2. Business Layer (비즈니스 계층):
    • 애플리케이션의 비즈니스 로직이 구현되는 부분. 서비스와 도메인 객체가 포함됨. AOP를 통해 로깅이나 트랜잭션 관리 등의 횡단 관심사를 처리.
  3. Persistence Layer (영속 계층):
    • 데이터베이스와의 상호작용을 담당. JDBC, JPA, Hibernate, MyBatis 등의 기술이 사용됨.
  4. Integration Layer (통합 계층):
    • 외부 시스템과의 통합을 담당. REST API, JMS, WebSocket, SOAP 등을 통해 외부 시스템과 통신.
  5. Infrastructure Layer (인프라 계층):
    • 스프링의 핵심 기능을 제공하는 부분으로, 스프링 빈 관리, 의존성 주입, AOP, 트랜잭션 관리 등이 포함됨.

3. 스프링 프레임워크 구조의 그림

이제 스프링의 구조를 시각적으로 표현한 그림을 설명하겠습니다.

  1. 프레임워크의 구조를 크게 Core, Data Access, Web, AOP, Messaging, Test 모듈로 구분합니다.
  2. 계층적 구조에서 프레젠테이션 계층, 비즈니스 계층, 영속 계층, 통합 계층으로 구성된 아키텍처를 설명합니다.
출처 : chat gpt
 

위의 그림은 스프링 프레임워크의 주요 모듈을 시각적으로 표현한 것입니다. 각 모듈의 역할과 위치를 이해하는 데 도움이 됩니다. 아래에서 각 모듈의 역할을 다시 한번 정리해 보겠습니다:

  1. Core Container (황금색): 스프링의 핵심 기능을 제공하는 모듈로, IoC와 DI를 지원합니다.
  2. Data Access/Integration (하늘색): 데이터베이스 접근 및 통합을 담당하며, JDBC, ORM, 트랜잭션 관리 등을 포함합니다.
  3. Web (연녹색): Spring MVC, Spring WebFlux를 포함한 웹 애플리케이션 개발을 지원합니다.
  4. AOP (연분홍색): 관점 지향 프로그래밍을 지원하여, 로깅, 트랜잭션 관리 등의 횡단 관심사를 처리합니다.
  5. Messaging (주황색): JMS 및 기타 메시징 기능을 지원하여 비동기 메시징을 가능하게 합니다.
  6. Test (보라색): JUnit과 TestNG를 기반으로 한 테스트 모듈로, 애플리케이션의 테스트를 쉽게 작성할 수 있도록 합니다.

 

댓글