티스토리 뷰
이전 글에서 스프링 프레임워크의 핵심인 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 등의 핵심적인 모듈을 통해 굉장히 편리하게 애플리케이션을 개발할 수 있게 되었다
개인 학습을 위해 작성되는 글입니다.
제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.
참조 링크:
'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 |
- Total
- Today
- Yesterday
- Spring MVC
- 제이쿼리 기본 선택자
- 맨코
- DefaultHandlerExceptionResolver
- 캐시
- @ResponseStatus
- 제이쿼리 위치탐색선택자
- DTO와 VO의 차이
- Spring API Error
- 세션
- Spring TypeConverter
- 쿠키
- Spring Container
- @ExceptionHandlere
- ExceptionHandlerExceptionResolver
- jQuery 직접 선택자
- Cache
- 제이쿼리 탐색선택자
- ResponseStatusExeceptionResolver
- OOP
- maenco
- 제이쿼리란
- 제이쿼리 인접 관계 선택자
- uri
- spring
- http
- 제이쿼리 직접 선택자
- application/x-www-form-urlencoded
- cookie
- Session
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |