[Spring] 스프링 프레임워크 모듈 구성

kai6666·2022년 6월 20일
0

TIL. Spring

목록 보기
2/11

💁‍♀️ 모듈 (Module)

모듈은 여러 기능들을 목적에 따라 그룹화 해놓은 묶음이다. Java에서 모듈은 패키지 단위로 묶여 있고, 이 패키지 안에는 관련 기능을 제공하기 위한 클래스들이 있다. 일반적으로 모듈은 재사용 가능한 라이브러리 형태로 제공된다.

👉 스프링 프레임워크 모듈 구성

공식 문서에 나타난 스프링 프레임워크의 모듈 아키텍처 이미지이다. 아래의 내용은 학습을 위해 Spring 공식문서를 임의로 번역한 내용이라 보다 정확한 이해를 위해서는 원문 확인을 권장한다. (이미지 클릭시 이동 가능)

Core Container

포함 모듈:

  • spring-core

  • spring-beans

  • spring-context

  • spring-context-support

  • spring-expression

spring-core 모듈과 spring-beans 모듈이 IoC/DI와 같은 프레임워크의 기본적인 기능을 제공한다.

Context(spring-context) 모듈은 Core 모듈과 Beans 모듈을 기반으로, 프레임워크에서 객체에 접근하는 수단이 되어준다. Context 모듈 자체는 Beans 모듈의 특징을 상속받아 국제화(internationalization), 리소스 로딩 등을 서포트한다. spring-context-support 모듈은 써드파티 라이브러리를 스프링에 가져올 때 도움을 준다.

spring-expression 모듈은 런타임에 객체 그래프를 쿼리하고 조작하기 위한 EL을 제공하다. EL(Expression Language)는 속성값을 설정하고 가져오는 것, 속성 부여, 메서드 호출, 배열/컬렉션/익덱서 등 내용에 접근 등 작업을 스프링의 IoC 컨테이너라는 이름 하에 서포트한다.

(*객체 그래프(Object Graph): 객체 지향 프로그램에서 객체 그룹은 서로 간의 관계(직접 참조/중간 참조 등)을 통해 네트워크를 형성하는데, 이런 객체 그룹을 객체 그래프라고 함.)

AOP and Instrumentation

포함 모듈:

  • spring-aop
  • spring-aspects
  • spring-instrument
  • spring-instrument-tomcat

spring-aop 모듈은 AOP 구현을 위한 메서드 인터셉터, 포인트컷 등 기능을 제공해 코드내 관심사 분리를 가능하게 해준다.spring-aspects 모듈은 AspectJ와의 통합을 지원해준다. spring-instrument 모듈은 클래스 계측(instrumentation) 지원과 특정 애플리케이션 서버에서 사용될 클래스로더 구현을 제공한다. 마지막으로 spring-instrument-tomcat 모듈은 톰캣을 위한 스프링 계측 에이전트를 포함하고 있다.

(*AspectJ: PARC에서 개발한 자바 프로그래밍 언어용 관점 지향 프로그래밍 확장 기능.)
(*Instrumentation: 사용할 데이터를 모으기 위해 메서드에 바이트 코드를 추가하는 것. 우리말로 직역하면 계측이다.)

Messaging

포함 모듈:

  • spring-messaging

이 모듈은 메시징 기반 애플리케이션의 기반이 되는 주요 기능들을 제공한다. 메시지를 메서드로 매핑하는 애너테이션을 가지고 있다.

Data Access/Integration

포함 모듈:

  • spring-jdbc
  • spring-tx
  • spring-orm
  • spring-oxm
  • spring-jms

Data Access/Integration 레이어는 JDVS, ORM, OXM, JMS 그리고 트랜잭션 모듈로 구성된다.
먼저 spring-jdbc 모듈은 JDBC 추상화 레이어를 제공한다. 추상화되어 있기 때문에 JDBC 코드를 전부 치거나 데이터베이스의 특정 오류 코드를 뜯어볼 필요가 없다.
spring-tx 모듈은 인터페이스와 POJO들은 가지고 있는 클래스의 트랜잭션 매니징을 지원해준다.
spring-orm 모듈은 ORM(object-relational mapping) API를 위한 통합 레이어(JPA, Hibernate 등)를 제공한다. spring-oxm 모듈은 객체/XML 매핑을 지원하는 추상화 레이어를 제공한다. spring-jms 모듈의 jms는 Java Messaging Service의 약자로, 메시지 생산과 소비를 위한 모듈이다.

Web

포함 모듈:

  • spring-web
  • spring-webmvc
  • spring-websocket

spring-web 모듈은 기본적인 웹 통합 기능(파일 업로드 기능, IoC 컨테이너 초기화 등)을 제공하며, HTTP 클라이언트와 스프링 원격 지원과 관련된 웹의 특정 부분을 가지고 있다.
spring-webmvc 모듈은 Web-Servlet 모듈로도 알려져있다. 스프링의 MVC와 웹 애플리케이션 구현을 위한 REST 웹 서비스를 가지고 있다.

Test

포함 모듈:

  • spring-test

Test 모듈은 유닛 테스트와 통합 테스트를 지원한다. 스프링 ApplicationContext의 로딩과 캐싱을 해주며, 개별 테스트를 위한 가짜(mock) 객체를 제공한다.

profile
성장 아카이브

0개의 댓글