Spring 03 - Spring Structure
in Web-Programming on Spring
스프링 구조
위 그림은 스프링 공식 문서에 나와있는 스프링 구조에 대한 그림이다. 이를 설명하자면 다음과 같다.
Core Container
Core
- DI와 Ioc 패턴을 적용할 수 있는 기본적인 스프링 프레임워크 클래스들을 포함하는 핵심 모듈
- 주로 어노테이션, 컨버터, 상수, 유틸리티 클래스등을 제공
Beans
- 스프링 DI기능의 핵심인 bean Factory와 DI기능을 제공하는 모듈
- Bean Factory통해 컨테이너 내 Bean 객체들을 관리
Context
- Core and Beans를 견고히(solid)한 모듈
- 국제화, 이벤트 전판, 리소스 로딩, 투명한 Context 생성 등을 제공
- 컨텍스트를 만드는데 필요한 기능과 빈 스캐너, 자바 코드 설정 기능, 표현식, 스크립트 언어 지원등 주요한 기능을 포함
Expression Language
- 객체 탐색을 실행 시에 구하거나(querying) 조작할 수 있도록 강력한 표현 언어를 제공
AOP and Instrumentation
AOP
- 관점 지향 프로그래밍을 지원
Instrumentation
- JVM에 에이전트를 추가하는 기능을 제공 그리고 정확히는 톰캣용 위빙 에이전트(weaving agent)를 제공
- 톰캣은 클래스 로더 되는 클래스 파일을 변환한다.
Data Access/Integration
JDBC, ORM, Transaction등을 통하여 데이터에 쉽게 접근할수 있는 방법을 제공
JDBC
- JDBC 기반하의 DAO 개발을 좀 더 쉽고, 일관된 방법으로 개발하는 것이 가능하도록 추상화된 레이어를 제공
ORM
- Object Relation Mapping
- 프레임워크인 Hibernate, iBatis, JDO, JPA와의 통합을 지원.
- 내부적으로는 JDBC를 사용
OXM
- Object/XML Mapping
- Object와 XML 간의 변환을 위한 추상 계층을 제공
- (JAXB, Castor, XMLBeans, JiBX, XStream 등)
JMS
- Java Message Service
- 메시징 처리를 위한 모듈을 제공
Transaction
- 스프링의 데이터에 직접적인 트랜잭션 관리
- 선언적인 트랜잭션 관리에 있어 일관된 추상화를 제공
- DataAcssessException 예외 계층 구조와 트랜잭션 동기화 저장소 JCA기능을 제공하거나 포함
WEB
MVC 구현 기능을 제공하고, 웹 애플리케이션 이용에 편리한 기능등을 제공
Web
- 기본적인 웹 기반을 위한 공통적 기능을 제공 및 정의한 모듈
- 다중 FileUpload처리, 리스너와 웹 기반으로 하는 application context를 위한 IOC컨테이너의 초기화를 제공
Web-Servlet
- 웹 어플리케이션 구현을 위한 Spring MVC를 제공, 전통적인 MVC와 @MVC기능을 모두 포함
- Struts, WebSocket과 같은 프레임 워크의 통합을 지원한다
Web-WebSocket
- WebSocket 프로그래밍을 지원하는 모듈
Web-Portlet
- 포털 기반의 MVC 구현을 위한 모듈을 제공
Test
JUnit이나 TestNG와 같이 Spring Components를 테스팅 하는 모듈 테스트 기능
Next
그래서 다음은..
Container and @bean…