Spring Framework 모듈 아키텍처
코어 컨테이너
코어 컨테이너 구성
Core Container는,
- spring-core
- spring-beans
- Spring Expression Language
- spring-context
4가지 모듈로 구성된다.
💡 모듈(Module)이란?
Java에서는 일반적으로, 지원되는 여러가지 기능들을
목적에 맞게 그룹화 하여 묶어 놓은 것을 모듈이라고 부릅니다.
모듈들은 Java의 패키지 단위로 묶여 있으며, 이 패키지 안에는 관련 기능을 제공하기 위한 클래스들도 함께 포함되어 있다. 일반적으로 모듈은 재사용이 가능하도록 라이브러리 형태로 제공되는 경우가 많다.
-
Core및 Beans모듈
Core는 Beans모듈은 IoC/DI 기능을 포함한 프레임워크의 기본 부분을 제공한다.
Core는 BeaFactory를 기반으로 Bean을 제어할 수 있으며, Beans는 스프링컨테이너가 관리하는 JAVA객체이다.
-
Context
Context는 유효성을 검증하고 라이프 사이클 관리등의 역할을 한다.
-
SpEL
SpEL은 런타임에 개체그래프를 쿼리하고 조작할 수 있는 강력한 표현 언어를 제공한다.
AOP / Aspects / Instrumentation / Messaging
- AOP
관점 지향 프로그래밍 관련 기능을 지원한다.
- Aspects
AspectJ와의 통합을 제공한다.
- Instrumentation
특정 애플리케이션 서버에서 사용할 클래스 지원 및 클래스 로더 구현을 제공한다.
- Messaging
메세지 기반 app을 작성할 수 있는 Message, MessageChannel, MessageHandler를 제공한다.
Data Access/Integration
Data Access / Integration 영역에는,
- JDBC
- ORM
- OXM
- JMS
- Transactions
총 5개의 모듈이 존재한다.
- JDBC
자바 JDBC 프로그래밍을 쉽게 사용할 수 있도록 도와준다.
- ORM
JPA, JDO, Hibernate를 포함한 ORM API를 위한 통합 레이어 제공한다.
- OXM
JAXB, Castor, XMLBeans, JiBX, XStream과 같은 Object/XML 맵핑을 지원한다.
- JMS
메시지 생성(producing), 사용(consuming)을 위한 기능을 제공하고, spring framework 4.1부터는 spring-messaging 모듈과의 통합을 제공한다.
- Transactions
선언적 트랜잭션 관리를 제공한다.
Web
Web 영역에는 4가지의 모듈이 존재한다.
- WebSocket
웹 소켓을 지원한다.
- Portlet
포틀릿 환경에서 사용할 MVC 구현을 제공한다.
- Web
멀티 파트 파일 업로드, 서블릿 리스너 등 웹 지향 통합 기능을 제공, HTTP 클라이언트와 Spring의 원격 지원을 위한 웹 부분을 제공한다.