■ 스프링 프레임워크 설치와 모듈 구성
01. 폴더 구성
spring-framework-3.0.1RELEASE-A-with-docs.zip의 압축을 풀면 다음과 같은 폴더가 생성된다.
① dist - 스프링 프레임워크의 각 모듈별 jar 파일을 포함하고 있다.
② docs - API 문서 및 레퍼런스 문서
③ projects - 각 모듈별 소스 코드 및 빌드 관련 파일을 포함하고 있다.
④ src - 각 모듈별 소스 jar 파일을 포함하고 있다.
02. 모듈 구성
① 스프링의 주요 모듈 목록
모 듈 명 |
설 명 |
core |
-. DI 기능을 비록한 프레임워크의 기반을 제공한다. |
beans |
-. BeanFactory 인터페이스를 통해 구현된다. |
expression |
-. 객체에 접근하고 객체를 조작하기 위한 표현 언어를 제공한다. |
context |
-. spring-core와 spring-beans 모듈을 확장해서 국제화, 이벤트 처리, 리소스 로딩, 서블릿 컨테이너를 위한 컨텍스트 생성 등의 기능을 추가로 제공한다. -. ApplicationContext 인터페이스를 통해 구현된다. |
context.support | -. Ehcache, 메일, 스케줄링, UI의 Velocity 지원 기능을 제공한다. |
aop | -. AOP Alliance에 호환되는 AOP 구현을 제공한다. |
aspects |
-. AspectJ와의 통합을 제공한다. |
web | -. 파일 업로드, Locale 처리 등 웹을 위한 통합 기능을 제공한다. -. 원격 지원 기능 중 웹 관련 기능을 제공한다. |
web.servlet |
-. 스프링 MVC를 제공한다. -. JSP, Velocity에 대한 뷰 연동을 지원한다. |
web.struts | -. 스프링과 스트럿츠 연동 기능을 제공한다. |
web.portlet | -. 포틀릿 환경에서 사용되는 MVC 구현을 제공한다. |
transacition | -. AOP를 이용한 선언적 트랜잭션 관리 및 코드를 이요한 트랜잭션 관리 기능을 제공한다. |
jdbc | -. JDBC 프로그래밍을 위한 추상 레이어를 제공한다. -. JDBC 템플릿을 제공함으로써 간결한 코드로 JDBC 프로그래밍을 할 수 있도록 돕는다. |
orm | -. 하이버네이트, JPA, iBATIS, JDO 등 API를 위한 통합 레이어를 제공한다. -. 스프링이 제공하는 트랜잭션 관리와의 연동을 지원한다. |
oxm | -. 객체와 XML 사이의 매핑을 처리하기 위한 추상 레이어를 제공한다. -. JAXB, Castor, XMLBeans, JiBX, XStream과의 연동을 지원한다. |
jms | -. JMS의 메시지를 생성하고 수신하는 기능을 제공한다. |
test | -. JUnit이나 TestNG를 이용한 스프링 컴포넌트의 테스트를 지원한다. |
instrument | -. Instrumentation 지원 클래스를 제공한다. |
instrument.tomcat | -. 톰캣 서버를 위한 Instrumentation 지원 클래스를 제공한다. |
asm | -. ASM 라이브러리를 재패키징 한 모듈 |
② 스프링 모듈간의 의존 관계
※ 점선 화살표는 화살표 방향으로 모듈 간의 관계가 의존관계가 있다는 것을 보여주고 있다.
예를 들어, orm 모듈은 jdbc모듈에 의존하고, core 모듈은 asm 모듈에 의존한다는 것을 의미한다.
03. 외부 의존 모듈
-. 스프링의 각 모듈은 다양한 외부 라이브러리를 사용하고 있다.
-. 스프링은 Commons Logging이나 SLF4J API를 이용해서 로그를 기록한다.
-. 하이버네이트, JPA, iBATIS등 DB연동 지원 기능은 다양한 외부 라이브러리를 사용하고 있다.
-. 스프링을 사용하는 데 필요한 모든 외부 모듈을 다운로드 받으려면 다양한 사이트를 방문해서 일일이 다운로드 받아야 한다.
스프링은 이런 불편함을 해소하기 위해 스프링 프렘임워크를 사용하는 데 필요한 모든 외부 의존 모듈을 spring-framework-3.0.1.RELEASE-dependencies.zip 파일로 제공하고 있다. 이 파일의 압축을 풀면 javax.servlet 폴더, org.apache.commons폴더 등이 존재하고 있으며, 각 하위 폴더에는 com.springsource.orgapache.commons.httpclient/3.1.0 폴더와 같이 의존 라이브러리의 이름 및 버전에 따른 디렉터리가 존재하며, 해당 디렉터리에는 com.springsource.org.apache.commons.httpclient-3.1.0.jar와 같은 실제 의존하는 jar 파일이 위치한다. 각 jar 파일의 형식은 com.springsource.모듈명-버전.jar이다. 예를 들어, 하이버네이트 3.3.1.GA 버전의 경우 org.hibernate/com.springsource.org.hibernate/3.3.1.GA 폴더에 com.springsource.org.hibernate-3.3.1.GA.jar 파일 이름으로 포함되어 있다.
스프링 프레임워크를 사용하기 위해서 모든 외부 모듈이 필요한 것은 아니다. 예를 들어, 스프링 프레임워크의 컨테이너 기능만 사용할 경우 asm, core, beans 모듈과 commons-logging-1.1.1 모듈의 4개의 jar 파일만 필요하다. |
04. Maven에서 스프링 모듈 의존 설정
프로젝트 빌드 / 관리를 위해 Maven 프레임워크가 널리 사용되고 있는데, Maven의 pom.xml 파일에 스프링 3 버전에 대한 의존을 추가하려면 groupId로 org.springframework를 사용하고, artifactid로 spring-* 형식을 사용하면 된다.
<dependenies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>3.0.1.RELEASE</version> </dependency> ... </dependencies> |
-. artifactId의 명명규칙은 스프링 프레임워크 배포판에 포함된 jar 파일의 이름과 차이가 있다.
-. 배포판의 모듈명에 점( . )이 포함되어 있는 경우, Maven의 artifactId는 점 대신에 '-'를 사용한다.
-. 예를 들어, web.servlet 모듈의 경우 배포판에 포함된 jar 파일의 이음른 org.springframework.web.servlet인데 반해
Maven 의존에서 사용하는 artifactId는 spring-webmvc 이다.
-. 아래 코드는 web.servlet 모듈에 의존하는 Maven 파일의 작성 예를 보여주고 있다.
<dependencies> <artifactId>spring-web</artifactId> <version>3.0.1RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.1.RELEASE</version> </dependency> ... </dependencies> |
'Spring > Spring Programming' 카테고리의 다른 글
[Spring] 스프링 프레임 워크란? (0) | 2012.12.10 |
---|