본문 바로가기

Spring/Spring Programming

[Spring] 스프링 프레임워크 설치와 모듈 구성

반응형

■ 스프링 프레임워크 설치와 모듈 구성


01. 폴더 구성

spring-framework-3.0.1RELEASE-A-with-docs.zip의 압축을 풀면 다음과 같은 폴더가 생성된다.

 ① dist - 스프링 프레임워크의 각 모듈별 jar 파일을 포함하고 있다.

 ② docs - API 문서 및 레퍼런스 문서

 ③ projects - 각 모듈별 소스 코드 및 빌드 관련 파일을 포함하고 있다.

 ④ src - 각 모듈별 소스 jar 파일을 포함하고 있다.


02. 모듈 구성

 ① 스프링의 주요 모듈 목록

모 듈 명

설                                            명

 core

 -. DI 기능을 비록한 프레임워크의 기반을 제공한다.

 beans

 -. BeanFactory 인터페이스를 통해 구현된다.

 expression

 -. 객체에 접근하고 객체를 조작하기 위한 표현 언어를 제공한다.
 -. JSP 2.1 규약에 명시된 통합 EL을 확장하였다.

 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>
      ...
      <dependency>
            <groupId>org.springframework</groupId>

            <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