본문 바로가기

Programming/SpringFrameWork

[펌]Spring Framework v2.0 - Jar Files

Spring Framework v2.0 - Jar Files
Spring Framework 배포본을 다운로드하여 압축을 풀면 dist 폴더가 존재한다. 여기에는 spring framework의 라이브러리가 jar파일 형태로 제공되는데 필요에 따라서 이들 파일들을 선택적으로 가져다가 이용하게 된다. 이 jar 파일들의 정보를 요약하면 다음과 같다 :

Full Jar (/dist)

  1. * "spring.jar" (~1915 KB)
    - 모든 표준 모듈들을 결합한 파일 (modules 폴더의 모든 jar 파일들을 합한 것이다.)
    - Note: extension 폴더의 jar 파일들은 포함하지 않았다.

Module Jar (/dist/modules)

  1. * "spring-core.jar" (~145 KB)
    - Contents: core utilities
    - Dependencies: Commons Logging, (Log4J)
  2. * "spring-beans.jar" (~295 KB)
    - Contents: JavaBeans support, bean container
    - Dependencies: spring-core, (CGLIB)
  3. * "spring-aop.jar" (~270 KB)
    - Contents: AOP framework, source-level metadata support, AOP Alliance interfaces
    - Dependencies: spring-core, (spring-beans, CGLIB, Commons Attributes)
  4. * "spring-context.jar" (~140 KB)
    - Contents: application context, validation, JNDI, UI context support, scripting
    - Dependencies: spring-beans, (Velocity, FreeMarker, JasperReports)
  5. * "spring-dao.jar" (~105 KB)
    - Contents: DAO support, transaction infrastructure
    - Dependencies: spring-core, (spring-beans, spring-aop, spring-context, JTA)
  6. * "spring-jdbc.jar" (~215 KB)
    - Contents: JDBC support, iBATIS SQL Maps support
    - Dependencies: spring-dao, spring-beans, (iBATIS SQL Maps)
  7. * "spring-support.jar" (~190 KB)
    - Contents: JMX support, JCA support, scheduling support, mail support, caching support
    - Dependencies: spring-beans, (spring-context, spring-dao, spring-jdbc, JMX, Quartz, JavaMail, EHCache)
  8. * "spring-web.jar" (~155 KB)
    - Contents: web application context, multipart resolver, Struts support, JSF support, web utilities
    - Dependencies: spring-context, Servlet, (JSP, JSTL, Commons FileUpload, COS, Struts, JSF)
  9. * "spring-webmvc.jar" (~250 KB)
    - Contents: framework servlets, web MVC framework, web controllers, web views
    - Dependencies: spring-web, (Tiles, iText, POI, Velocity, FreeMarker, JasperReports)
  10. * "spring-remoting.jar" (~170 KB)
    - Contents: remoting support, EJB support, JMS support
    - Dependencies: spring-beans, spring-aop, (spring-context, spring-web, Hessian, Burlap, JAX-RPC, EJB, JMS)

Extension Module Jar (/dist/extmodules)

  1. * "spring-portlet.jar" (~110 KB)
    - Contents: framework portlets, portlet MVC
    - Dependencies: spring-web, spring-webmvc, (Portlet)
  2. * "spring-jdo.jar" (~65 KB)
    - Contents: JDO 1.0/2.0 support
    - Dependencies: spring-dao, spring-jdbc, JDO, (spring-web, spring-portlet)
  3. * "spring-jpa.jar" (~45 KB)
    - Contents: JPA 1.0 support
    - Dependencies: spring-dao, spring-jdbc, JPA, (spring-web, spring-portlet)
  4. * "spring-hibernate2.jar" (~90 KB)
    - Contents: Hibernate 2.1 support
    - Dependencies: spring-dao, spring-jdbc, Hibernate2, (spring-web, spring-portlet)
  5. * "spring-hibernate3.jar" (~110 KB)
    - Contents: Hibernate 3.0/3.1 support
    - Dependencies: spring-dao, spring-jdbc, Hibernate3, (spring-web, spring-portlet)
  6. * "spring-toplink.jar" (~55 KB)
    - Contents: TopLink support
    - Dependencies: spring-dao, spring-jdbc, TopLink
  7. * "spring-ojb.jar" (~30 KB)
    - Contents: OJB 1.0 support
    - Dependencies: spring-dao, spring-jdbc, OJB
  8. * "spring-mock.jar" (~75 KB)
    - Contents: JNDI mocks, Servlet API mocks, Portlet API mocks, JUnit support
    - Dependencies: spring-core

Aspects Jar (/dist/aspects)

  1. * "spring-aspects.jar" (~10 KB)
    - Contents: AspectJ aspects, for explicitly linking aspects into an IDE (Eclipse AJDT)
    - Not needed for deployment, since its classes are also in "spring" and "spring-aop"

정리하면 다음과 같다 :

  • 그냥 편하게 사용하려면 /dist/spring.jar 만을 사용한다.
  • 좀 따져서 꼼꼼하게 필요한 것만 사용하려면 /dist/spring.jar를 사용하지 말고 /dist/modules 폴더의 필요한 jar 파일들만 선택하여 사용한다.
  • /dist/extmodules 파일들은 필요한 것만 골라서 사용한다.
  • /dist/aspects 의 jar 파일은 eclipse로 AspectJ를 사용하려고 할 때만 필요하다. 실제 배포시에는 필요없다.

나의 경우 필요한 라이브러리 파일은 spring.jar와 여기에 의존성을 가지는 라이브러리들이 위에 각 모듈마다 기록되어 있는데... 이를 모두 정리하면 다음과 같다:

  • spring.jar
  • /jakarta-commons/commons-logging.jar
  • /log4j/log4j-1.2.13.jar
  • /cglib/cglib-nodep-2.1_3.jar
  • /jakarta-commons/commons-attributes-compiler.jar
  • /jakarta-commons/commons-attributes-api.jar
  • /ibatis/ibatis-sqlmap-2.jar
  • /ibatis/ibatis-common-2.jar
  • /jakarta-commons/commons-fileupload.jar
  • /j2ee/jstl.jar
  • /j2ee/mail.jar