스프링을 배우기 전에 전체 스프링에 대한 그림을 그려봅니다. 각 모듈이 이해는 되지 않더라도 저체틀을 이해 하도록 하세요~~
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
Spring Framework 3.x Module(스프링
모듈) 그림...
Core
Container
:namespace
prefix = o ns = "urn:schemas-microsoft-com:office:office"
/>
spring
framework의 가장
핵심 모듈 입니다.
Core
Container는 Core,
Beans, Context, EL(__EXPRESSION__ Language) 모듈들로 구성되어 있다.
Core
모듈과 Beans 모듈은 프레임웍의 기반이 되는 부분들로,
IoC와 DI(Dependency Injection, 의존성주입) 기능을 제공한다. 주요컴포넌트인 BeanFactory는 팩토리 패턴을 철학적으로 구현해놓은 것으로,
프로그램에서 직접 싱글톤을 생성하지 않을 수 있게 해주며, 객체간의 의존관계를 실제
프로그램 로직에서부터 설정파일로 분리해낼 수 있게 해준다.(IoC 패턴을 사용하여 애플리케이션의 설정
및 의존성을 에플리케이션에서 분리한다)
Context
모듈은 Core 모듈과 Beans 모듈의 실체화된 부분을 제공하며, 객체에 대한 접근 방법을 JNDI 레지스트리와 유사하게 프레임웍
형식으로 제공한다. Beans 모듈의 기능을 상속받고,
이에 추가적으로 국제화(리소스 번들의 사용과 같은),
JNDI, EJB, 이벤트 전이(event-propagation), 리소스 로딩, 서블릿 컨테이너와 같은 컨텍스트의 생성 기능들을 함께 제공한다.
__EXPRESSION__
Language 모듈은
객체 그래프를 런타임시에 조회하고 조작할 수 있는 강력한 표현 언어 기능을 제공하며, JSP 2.1
스펙에서 사용하는 통합표현언어(unified EL)를 확장하고 있다.
2. Data
Access/Integration
JDBC, ORM, OXM,
JMS, 트랜잭션 모듈들로
구성되어 있다.
JDBC
모듈은 JDBC개발을 위한 추상 레이어를 제공하여 데이터베이스의 종류에 따른 JDBC
구현코드와 에러 코드를 대신 다루어준다.(JDBC 템플릿을 제공함으로써 간결한
코드로 JDBC 프로그래밍을 할 수 있도록 돕는다)
ORM 모듈은 JPA,
JDO, 하이버네이트(Hibernate), iBatis와 같이 잘 알려진 객체-관계매핑(object-relational mapping, ORM) API들에 대한 인티그레이션 레이어를
제공한다. ( 스프링이 제공하는 트랜잭션 관리와의 연동을 지원한다)
OXM 모듈은 JAXB,
Castor, XMLBeans, JiBX, XStream과 같은 객체/XML
매핑(Object/XML mapping) 구현체에 대한 추상 레이어를 제공한다. 즉 객체와 XML 사이의 매핑을 처리하기 위한 추상 레이어를
제공한다.
JMS(Java
Messaging Service) 모듈은 메시지의 생성과 소비 기능을
제공하며, Transaction 모듈은 프로그램적(programmatic) 또는 선언적(declarative)
트랜잭션 관리 기능을 제공한다.
3.
Web
웹레이어는 Web,
Web-Servlet, Web-Struts, Web-Portlet 모듈들로 구성되어 있다.
스프링의 Web
모듈은 multipart 파일업로드,
Locale처리, 서블릿 리스너를 사용한 IoC
컨테이너와 웹-애플리케이션 컨텍스트를 초기화 등의 기본적인 웹 관련 인티그레이션 기능들을
제공한다.
Web-Servlet
모듈은 웹 애플리케이션에 필요한 Spring
MVC(model-view-controller) 구현체를 제공하며 JSP,
Velocity에 대한 뷰연동을 지원한다.
Web-Struts
모듈은 스프링과 스트럿츠의
연동 기능을 제공하며 Web-Portlet 모듈은 포틀릿 환경에서 사용되는 MVC 구현을 제공한다.
4. AOP and
Instrumentation
스프링의 AOP
모듈은 AOP Alliance의 규약에 호환되는 관점-지향 프로그래밍(aspect-oriented programming)
구현체를 제공하며, 메서드 인터셉터와 포인트컷을 사용해 코드를 기능별로 깔끔하게 분리될
수 있게 도와준다.
Aspects
모듈은 AspectJ와의 인티그레이션을 제공하며, Instrumentation
모듈은 특정 애플리케이션 서버에서 사용되는 클래스로더(classloader) 구현체와
인스트루먼테이션(instrumentation) 기능을 제공한다.
5.
Test
JUnit이나 TestNG를 이용한 스프링 컴포넌트의 테스트를 지원한다
댓글 없음:
댓글 쓰기