티스토리 뷰

반응형

이전 글에서 스프링 프레임워크의 핵심인 POJO , IoC/DI , AOP , PSA를 살펴보았다

여기서 좀 더 나아가 스프링 프레임워크의 구조는 어떻게 되어 있는지 살펴보고자 한다

 

Module(모듈)

프로그램의 기능을 독립적인 부품으로 분리한 것을 모듈이라고 한다

그 자체로서 컴파일이 가능한 단위이며 재사용이 가능하고 동시에 여러 다른 모듈이 개발에 사용될 수 있다

이를 좀 더 쉽게 풀어보자면 여러 코드들이 모여 어떤 기능을 처리하는 덩어리라고 생각하면 될 듯하다

(jar파일들이 수많은 기능을 가진 클래스들로 묶여있으니 이 또한 하나의 모듈이다)

 

이렇게 각각의 모듈들을 구성하여 만든 것이 바로 Spring Framework다

 

Spring Framework (4.3.13 기준)

스프링 프레임워크는 총 20여 개의 모듈들로 구성이 되어 있는데

이를 꼭 전부 사용해야 하는 것이 아니라 필요할 때 해당 모듈만 사용하면 되는 경량 컨테이너로 설계가 되어있다

Core Container

스프링 프레임워크의 핵심인 빈의 생명주기와 설정 그리고 처리 방법을 관리하는 스프링 컨테이너이다

모든 스프링 모듈은 코어 컨테이너 기반으로 구축된다 

 

1. Beans

Beans는 스프링 DI기능의 핵심인 빈 팩토리와 DI 기능을 제공하는 모듈이다

빈 메타 정보, 빈 리더, 빈 팩토리의 구현과 프로퍼티 에디터가 포함되어 있다고 한다

 

2. Core

Core모듈을 단어의 뜻처럼 거의 대부분의 다른 스프링 모듈에서 필요로 하는 공통 기능을 갖는 핵심 모듈이다

스프링에서 사용하는 주요 어노테이션과 컨버터, 상수 그리고 유틸리티 클래스 등을 제공한다

 

3. Context

애플리케이션의 Context 기능을 제공하는 모듈이다

콘텍스트를 만드는데 필요한 대부분의 기능과 빈 스캐너, 자바 코드 설정 기능 , 표현식 , 스크립트 언어 지원 등의 주요한 기능을 담고 있다

단순한 빈 팩토리가 아닌 엔터프라이즈 애플리케이션 프레임워크로 사용하기 위하여는 반드시 필요한 모듈이라고 한다

 

4. SpEL

스프링 표현 언어 기능을 제공한다

 

AOP & Aspect & Instrumentation

1. AOP

스프링은 AOP 모듈을 통해 관점 지향 프로그래밍을 지원한다

 

2. Aspects

스프링이 제공하는 AspectJ AOP를 사용할 때 필요한 모듈이다

 

3.Instrument

특정 애플리케이션 서버에서 사용할 클래스 계측 지원 및 클래스 로더 구현을 제공한다

 

Messaging

Message, MesageChannel, MessageHandler 등의 스프링 통합 프로젝트를 포함하고 있으며

메시지 기반 애플리케이션의 구축하는데 역할을 한다 (Spring MVC의 어노테이션 기반 모델과 비슷한)

 

Data Access/Integration (데이터 액세스/통합)

스프링은 JDBC , ORM , Transaction 등의 서비스 추상화를 통하여 쉽게 데이터에 접근하는 방법을 제공한다

 

1. JDBC

Java JDBC 프로그래밍을 비교적 쉽게 할 수 있도록 제공하는 모듈이다

 

2. ORM

JPA , JDO  및 Hibernate를 포함한 널리 사용되는 관계형 매핑 API에 대한 통합 계층을 제공한다

orm을 통하여 간단한 선언적 트랜잭션 관리 기능을 비롯한 Spring이 제공하는 다른 모든 기능을 O/R 매핑 프레임워크로 사용할 수 있게 한다

 

3. OXM

JAXB , XMLBeans 등과 같은 객체/XML 매핑의 추상화 계층을 제공한다

 

4. JMS

spring-jms 모듈은 Java Messaging Service의 약자로서 메시지 생성 및 사용을 위한 기능을 제공한다

(이는 Spring Freamwork 4.1부터 spring-messging 모듈과 통합 제공한다)

 

5. Transaction

spring-tx 모듈은 특수 인터페이스를 구현하는 클래스와 모든 POJO에 대하여 선언적 트랜잭션 관리를 지원한다

 

Web

스프링은 다양한 MVC 프레임워크를 사용할 수 있지만 스프링 자체적으로 제공하는 Spring MVC 모듈들이 있다

또한 스프링의 리모팅 기술로 RMI, Hessian, HTTP 호출자 , REST API 모듈 등을 제공한다

 

1. WebSocket

웹소켓을 지원한다

 

2. Servlet

스프링 MVC 기능을 제공하는 모듈이다 전통적인 MVC와 @MVC의 기능이 모두 포함되어 있다

 

3. Web

웹 애플리케이션 이용에 편리한 기능을 제공한다

Multipart-File Upload  기능 및 서블리 리스너 , IoC 컨테이너 초기화 같은

기본적인 웹 지향 통합 기능을 제공한다

 

4. Portlet

포틀릿 환경 미러 서블릿 기반의 기능에 사용될 MVC 구현을 제공한다

 

Test

스프링은 테스트에 전념할 수 있도록 Test 모듈을 제공한다

JUit , TensNg를 이용하여 테스트 컨텍스트 프레임워크나 Mock 오브젝트 등을 이용하여 테스트할 때 사용한다

 

핵심정리

스프링 프레임워크는 20여 개의 모듈로 구성되어 있으며

각 모듈은 반드시 전부 사용해야 하는 것이 아니라 필요한 것만 사용하도록 설계되어 있다

이를 통해 큰 규모의 애플리케이션(엔터프라이즈급)을 구축하더라도 용이하게 사용할 수 있으며 (필요한 모듈만 골라 쓸 수 있으니)

IoC/DI , AOP , MVC , TEST 등의 핵심적인 모듈을 통해 굉장히 편리하게 애플리케이션을 개발할 수 있게 되었다

 

 

더보기

개인 학습을 위해 작성되는 글입니다.

제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.

 

참조 링크:

https://docs.spring.io/spring-framework/docs/4.3.13.RELEASE/spring-framework-reference/html/overview.html

https://dololak.tistory.com/21

http://dawoonjeong.com/spring-module/

 

반응형

'Spring' 카테고리의 다른 글

[Spring-Boot] Spring과 Spring Boot의 차이  (0) 2021.08.19
[Spring] Web Scope(웹 스코프)  (0) 2021.08.17
[Spring] Bean & Bean Scope  (0) 2021.08.16
[Spring] Component Scan & Autowired  (0) 2021.08.13
[Spring] Singleton(싱글톤)  (0) 2021.08.13
댓글