B.2) 모듈별 의존 라이브러리 의존관계
의존 라이브러리
- 스프링의 많은 의존 라이브러리 중에서 어떤 것을 사용할지 결정하는 일은 쉽지 않다.
- 가장 좋은 접근 방법은 스프링의 각 모듈별로 필요한 의존 라이브러리를 선택하는 것이다.
- 어떤 스프링 모듈을 사용할지 결정됐다면, 각 모듈별로 활용할 세부적인 기능에 따라서 필요한 라이브러리를 선택하면 된다.
- 거의 대부분의 스프링 의존 라이브러리는 필수가 아니다.
사용할 모듈의 기능에 따라서 의존 라이브러리가 필요할 수도 있고 아닐 수도 있다는 뜻이다. - 따라서 모듈별 선택 라이브러리 중에서 적절한 라이브러리를 선택할 수 있어야 한다.
- 선택 의존 라이브러리 중에서 패키지 이름이 javax로 시작하는 것은 자바의 표준 API 라이브러리다.
- 표준 API 중 일부는 서버에서 제공되기 때문에 빌드 중에는 필요하지만 서버에 배포할 때는 제외해야 하는 것들도 있다.
필수 라이브러리
- Commons Logging 1.1.1
- 재패키징 모듈인 ASM, 자바 에이전트와 톰캣 클래스 로더에 사용되는 Instrument, Instrument-Tomcat 모듈을 제외한
모든 스프링 모듈은 아파치 Commons 프로젝트의 Logging 라이브러리를 사용해 로그를 남기도록 되어 있다. - 따라서 Commons Logging은 모든 스프링 프로젝트에 포함시켜야 하는 필수 라이브러리다.
- Commons-Logging 대신 SLF4J를 사용한다면 jcl-over-slf4j로 대체할 수도 있다.
- 재패키징 모듈인 ASM, 자바 에이전트와 톰캣 클래스 로더에 사용되는 Instrument, Instrument-Tomcat 모듈을 제외한
모듈별 선택 라이브러리
- ASM 모듈
- 단순히 ASM 라이브러리를 재패키징한 것이기 때문에 다른 의존 라이브러리는 없다.
- Core 모듈
- 필수 라이브러리는 없다.
- AspectJ Weaver 1.6.8
: AspectJTypeFilter 클래스에서 사용되며 Aspect 기능을 활용하는 다른 모듈이 함께 사용된다. - JBoss VFS 2.1.0.GA
: JBoss 서버가 제공하는 VFS에 대한 VFS 리소스 추상화 기능을 위해 사용된다.
JBoss VFS의 리소스를 직접 활용해야 할 경우에 사용한다.
- Beans 모듈
- 필수 의존 라이브러리가 없다.
- CGLib 2.2.0/2.1.3
: 프로토타입 빈의 DL 기능을 자동으로 추가해주는 메소드 주입을 사용할 때 필요하다.
- AOP 모듈
- AOP Alliance 1.0.0
: AOP 모듈의 필수 라이브러리로 어드바이스를 만들 때 사용하는 Advice, MethodInterceptor 인터페이스 등이 정의된다. - Jamon API 2.4.0
: 애플리케이션 모니터 API인 Jamon API를 이용한
성능측정용 어드바이스인 JamonPerformanceMonitorInterceptor에 사용된다.
AOP를 이용한 간단한 성능측정/모니터링 기능이 필요한 경우에 사용할 수 있다. - CGLib 2.2.0/2.1.3
: CGLib 기반의 프록시를 만들 때 사용하며 인터페이스 대신 클래스 상속을 통한 클래스 프록시를 만들 수 있다. - Commons Pool 1.5.3/1.3.0
: AOP에서 사용되는 TargetSource 구현의 하나인 CommonsPoolTargetSource에서 사용된다.
TargetSource를 풀링 방식으로 설정해서 사용할 수 있는 고급 사용자에게 필요한 기능이다. - AspectJ Weaver 1.6.8
: AspectJ 스타일의 스프링 AOP를 사용할 경우에 필요하다.
AspectJ의 문법과 애노테이션 등을 차용해서 스프링 AOP를 만들기 위해 필요한 것으로
Aspect 애노테이션을 사용해 만든 어드바이스, 포인트컷 등을 쓰려면 추가해야 한다.
- AOP Alliance 1.0.0
- Expression 모듈
- 의존 라이브러리가 없다.
- Context 모듈
- BeanShell 2.0.0.b4
: 스프링의 BeanShell 언어 지원 기능을 사용할 때 필요하다.
스프링은 BeanShell 스크립트를 실행하거나 빈을 등록해서 사용할 수 있는 기능을 제공한다. - Backport 3.0.0
: JSR-166 Backport를 이용한 스케줄링 기능을 사용할 때 필요하다. - JSR-250 Common Annotations 1.0.0
: @Resource, @PostContruct 같은 표준 애노테이션을 정의하며 애노테이션을 이용한 DI를 적용하려면 필요하다.
단 JDK 6이나 JavaEE 1.5 이상에서는 기본적으로 제공되기 때문에 포함하지 않아도 된다. - EJB 3.0.0
: 스프링의 EJB 지원 기능에 필요하며 EJB 빈을 프록시를 통해 DI 해서 사용할 경우에 쓴다. - JSR-330 DI for Java 1.0.0
: @Inject와 Provider<T> 같은 JSR-330 애노테이션을 이용해 DI 하는 경우에 필요하다. - JMS 1.1.0
: 스프링의 JMS 지원 기능을 사용하는 경우에 필요하다. - Java Persistence API 1.0.0
: JPA 지원을 위한 클래스로더에서 필요하다. - JSR-303 Bean Validation 1.0.0.GA
: JSR-303의 빈 검증기를 이용한 검증 기능을 적용할 때 필요하다.
웹 환경의 모델 검증에도 사용되지만 독자적으로 검증기를 만들어 적용할 수도 있다. - JAX-WS 2.1.1
: JAX-WS의 @WebServiceRef 애노테이션을 사용할 때 필요하다. - CGLib 2.2.0/2.1.3
: 스코프 프록시, JMX, 스크립팅 언어 지원 기능 등에 사용한다. - AOP Alliance 1.0.0
: 스프링 이벤트, EJB, JMX, JNDI, 리모팅, 스크립팅 등 많은 기능에 사용하므로 반드시 포함한다. - AspectJ Weaver 1.6.8
: 로드타임 위버 기능에 사용한다. - Groovy 1.6.5
: Groovy 스크립팅 언어 지원 기능에 사용한다.
Groovy를 이용해서 빈을 만들어서 사용하거나 Groovy 코드를 실행시켜야 할 때 필요하다. - Joda Time 1.6.0
: Joda를 이용한 포매터에 사용한다. - JRuby 1.4.0
: JRuby 스크립팅 언어 지원 기능에 사용한다.
JRuby를 이용해 만든 빈을 사용할 경우에 필요하다.
- BeanShell 2.0.0.b4
- Context.Support 모듈
- CommonJ 1.1.0
: CommonJ를 이용한 스케줄링 기능을 사용할 때 필요하다. - FreeMarker 2.3.15
: FreeMarker 템플릿의 지원 기능에 필요하다.
FreeMarker는 스프링 MVC의 뷰로도 사용하지만 독립적인 템플릿 엔진으로 활용할 수도 있다. - JAF 1.1.0
: JavaMail을 이용한 메일 메시지 추상화에 필요하다. - Java Mail 1.4.0
: JavaMail을 이용한 메일 메시지 추상화에 필요하다. - Ehcache 1.6.2
: EhCacheFactoryBean을 이용해 EhCache 빈을 생성할 경우에 필요하다. - JasperReports 2.0.5
: JasperReport를 이용할 때 활용할 수 있는 편리한 기능을 제공해주는 JasperReportUtils를 사용할 때 필요하다. - Velocity 1.5.0
: Velocity 템플릿 엔진을 사용하는 경우에 포함한다. - Commons Collection 3.2.1/3.2.0
: Velocity를 위한 리소스 로더에 사용한다. - Quartz 1.6.2
: Quartz를 이용한 스케줄링 기능을 사용할 때 필요하다.
- CommonJ 1.1.0
- Transaction 모듈
- AOP Alliance 1.0.0
: Transaction 모듈의 필수 라이브러리로 JPA의 예외자동 변환용 AOP와 트랜잭션 AOP에 필요하다. - WebSphere UOW 6.0.2.17
: 웹스피어 UOW 트랜잭션 매니저를 사용할 때 필요하다.
웹스피어에 특화된 트랜잭션 확장 기능을 사용할 수 있게 해준다. - EJB 3.0.0
: EJB 3의 @TransactionAttribute 애노테이션을 트랜잭션 속성을 부여하는데 사용한다. - Java Resource 1.5.0
: 스프링의 JCA 지원 기능을 사용할 때 필요하다. - Java Transaction 1.1.0
: JTA 트랜잭션 매니저를 사용할 때 필요하다.
- AOP Alliance 1.0.0
- JDBC 모듈
- C3P0 0.9.1.2
: 스프링 애플리케이션에서 애용되는 애플리케이션 내장 DB 커넥션 풀의 하나인 C3P0를 사용할 때 추가한다.
Native JDBC 오브젝트를 가져와야 하는 특별한 경우에 사용한다. - Java Transaction 1.1.0
: JTA Lob 지원 기능에 사용한다.
JTA를 사용한다면 이미 JDBC의 의존모듈인 Transaction 모듈에서 포함시켰을 것이므로 신경 쓰지 않아도 된다. - Derby 10.5.1000001.764942
: 내장형 DB인 Derby를 사용할 경우에 필요하며 스프링의 내장형 DB 추상화 기능에도 사용한다. - H2 1.0.71
: 내장형 DB인 H2를 사용할 경우에 필요하다. - HSQLDB 1.8.0.9
: 내장형 DB인 HSQLDB를 사용할 경우에 필요하다.
- C3P0 0.9.1.2
- ORM 모듈
- iBatis 2.3.4.726
: iBatis를 이용해 DAO를 만들 때 필요하다. - JDO 2.1.0
: JDO를 이용해 DAO를 만들 때 필요하다. - Java Persistence API 1.0.0
: JPA를 이용해 DAO를 만들 때 필요하다. - Servlet 2.5.0
: 서블릿 환경에서 하이버네이트의 OpenSessionInViewFilter나
JPA의 OpenEntityManagerInViewFilter 기능을 이용할 때 필요하다. - Java Transaction 1.1.0
: Hibernate 3에서 사용하므로 반드시 추가한다. - TopLink Essentials 2.0.0.b41-beta2
: JPA 구현 엔진으로 TopLink Essentials를 사용할 때 추가한다. - AOP Alliance 1.0.0
: Hibernate나 JPA의 템플릿/콜백을 대신해서 AOP 방식으로 세션과 엔티티 매니저를 바인딩할 경우에 필요하다.
기본적으로 트랜잭션 매니저를 사용하고 트랜잭션 AOP를 적용하고 있다면 ORM 모듈에서는 신경 쓰지 않아도 된다. - OpenJPA 1.1.0
: JPA 구현 제품의 하나인 OpenJPA를 사용할 경우에 필요하다. - Eclipse Persistence JPA 1.0.1
: 이클립스의 JPA 구현 제품인 EclipseLink JPA를 사용할 때 추가한다. - Hibernate 3.3.1.GA
: 스프링이 지원하는 하이버네이트의 최신 버전은 3.3.1.GA이며
하이버네이트를 이용한 DAO를 작성하거나 하이버네이트를 JPA 구현으로 사용할 경우에 모두 필요하다. - Hibernate Annotation 3.4.0.GA
: 하이버네이트의 애노테이션을 이용한 ORM 설정을 사용하는 경우에 필요하다. - Hibernate EJB 3.4.0.GA
: 하이버네이트를 JPA 엔진으로 사용하는 경우에 필요하다.
- iBatis 2.3.4.726
- Web 모듈
- Caucho 3.2.1
: Burlap/Hessian을 이용한 리모팅 기능을 사용할 때 필요하다. - Java EL 1.0.0
: Web 모듈에서 JSF 지원 기능에 필요하다. - Java Faces 1.2.0.08
: JSF를 스프링의 웹 기술로 사용할 때 필요하다. - Portlet 2.0.0
: 포틀릿을 사용할 때 필요하다. - Servlet 2.5.0
: 서블릿 기반의 웹 모듈의 핵심 API로
서블릿 API를 직접 코드에서 사용하지 않는다면, 서버에서 기본적으로 제공해주므로 신경 쓰지 않아도 된다. - JSP 2.1.0
: 스프링의 태그 지원 기능에서 사용한다.
서버에서 지원되므로 대부분의 경우 포함시키지 않아도 됨 - JAX-RPC 1.1.0
: JAX-RPC를 이용한 리모팅 기능을 만들 때 사용 - XML SOAP 1.3.0
: JAX-WS를 사용해 리모팅 기능을 만들 때 필요하다. - JAX-WS 2.1.1
: JAX-WS를 사용해 리모팅 기능을 만들 때 필요하다. - AOP Alliance 1.0.0
: 모든 리모팅 기능에 필요하다. - Axis 1.4.0
: Axis를 이용해 웹 서비스를 구현할 때 필요하다.
하지만 Axis 지원 기능은 앞으로 제거될 예정이므로 JAX-WS를 사용하도록 권장한다. - Commons Fileupload 1.2.0
: 웹에서 파일 업로드 기능을 사용할 때 필요하다. - Commons HttpClient 3.1.0
: REST 템플릿을 사용할 때 필요하다. - Log4J 1.2.15
: Log4jConfigListener를 이용해 애플리케이션 레벨의 Log4J 설정을 해줄 때 필요하다. - Jackson Mapper 1.4.2
: JSON 메시지 컨버터에 사용한다.
- Caucho 3.2.1
- Web.Servlet 모듈
- iText 2.0.8
: iText를 이용한 PDF 뷰를 만들 때 필요하다. - Syndication 1.0.0
: RSS/Atom 피드 뷰를 만들 때 사용한다. - FreeMarker 2.3.15
: FreeMarker 뷰를 만들 때 사용한다. - Servlet 2.5.0
: 코드에서 서블릿 API를 직접 사용하는 경우에 필요하다. 배포 패지키에는 포함시키지 않아도 된다. - JSP 2.1.0
: JSP/JSTL 뷰와 폼 태그에 사용한다. - JSTL 1.1.2
: JSP/JSTL 뷰와 폼 태그에 사용한다. - JExcelApi 2.6.6
: JExcel API를 이용해 엑셀 뷰를 만들 때 필요하다. - JasperReports 2.0.5
: JasperReports를 이용한 뷰를 만들 때 필요하다. - POI 3.0.2.FINAL
: POI를 이용한 엑셀 뷰를 만들 때 필요하다. - Tiles 2.1.2.osgi
: Tiles 뷰에 사용한다. - Tiles Core 2.1.2.osgi
: Tiles 뷰에 사용한다. - Tiles JSP 2.1.2
: Tiles 뷰에 사용한다. - Times Servlet 2.1.2
: Tiles 뷰에 사용한다. - Velocity 1.5.0
: Velocity 뷰를 만들 때 필요하다. - Velocity Tools View 1.4.0
: Velocity 뷰를 만들 때 필요하다. - Jackson Mapper 1.4.2
: JSON 뷰를 만들 때 필요하다.
- iText 2.0.8
- Web.Portlet 모듈
- Portlet 2.0.0
: 포틀릿 API를 사용하는 경우에 필요하다. - Servlet 2.5.0
: 서블릿 API를 사용하는 경우에 필요하다. - Commons Fileupload 1.2.0
: 포틀릿에 파일 업로드 기능을 넣을 때 필요하다.
- Portlet 2.0.0
- Web.Struts 모듈
- Commpns Beanutils 1.7.0/1.8.0
: 스트럿츠 1과 연동을 위해 필요하다.
- Commpns Beanutils 1.7.0/1.8.0
- JMS 모듈
- JMS 1.1.0
: JMS API를 사용하는 경우에 필요하다. - Java Resource 1.5.0
: JMS 메시지 리스너를 등록해서 사용할 때 필요하다. - AOP Alliance 1.0.0
: JmsInvokerClientInterceptor에 사용한다.
- JMS 1.1.0
- Aspects 모듈
- AspectJ Weaver 1.6.8
: AspectJ AOP 기능을 사용하기 위해 반드시 추가한다.
- AspectJ Weaver 1.6.8
- Instrument 모듈
- 의존 라이브러리가 없다.
- Instrument.Tomcat 모듈
- 의존 라이브러리가 없다.
- Test 모듈
- 직접 의존하는 것은 JUnit과 같은 테스트 프레임워크뿐이다.
하지만 테스트 방법에 따라 DBUnit과 같은 다양한 테스트용 라이브러리가 추가로 필요할 수 있다. - JUnit 3.8.2
: JUnit 3.8.2를 이용해 테스트를 만들 때 필요하다. - JUnit 4.7.0
: JUnit 4.7을 이용해 테스트를 만들 때 필요하다.
- 직접 의존하는 것은 JUnit과 같은 테스트 프레임워크뿐이다.
'Java-Spring > 토비의 스프링 3.1' 카테고리의 다른 글
[토비의 스프링 3.1] Vol. 1 스프링의 이해와 원리 - 목차 (0) | 2024.05.28 |
---|---|
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(1) (0) | 2024.05.27 |
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(0) (0) | 2024.05.27 |
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 모듈(2) (0) | 2024.05.20 |
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 모듈(1) (0) | 2024.05.18 |
B.2) 모듈별 의존 라이브러리 의존관계
의존 라이브러리
- 스프링의 많은 의존 라이브러리 중에서 어떤 것을 사용할지 결정하는 일은 쉽지 않다.
- 가장 좋은 접근 방법은 스프링의 각 모듈별로 필요한 의존 라이브러리를 선택하는 것이다.
- 어떤 스프링 모듈을 사용할지 결정됐다면, 각 모듈별로 활용할 세부적인 기능에 따라서 필요한 라이브러리를 선택하면 된다.
- 거의 대부분의 스프링 의존 라이브러리는 필수가 아니다.
사용할 모듈의 기능에 따라서 의존 라이브러리가 필요할 수도 있고 아닐 수도 있다는 뜻이다. - 따라서 모듈별 선택 라이브러리 중에서 적절한 라이브러리를 선택할 수 있어야 한다.
- 선택 의존 라이브러리 중에서 패키지 이름이 javax로 시작하는 것은 자바의 표준 API 라이브러리다.
- 표준 API 중 일부는 서버에서 제공되기 때문에 빌드 중에는 필요하지만 서버에 배포할 때는 제외해야 하는 것들도 있다.
필수 라이브러리
- Commons Logging 1.1.1
- 재패키징 모듈인 ASM, 자바 에이전트와 톰캣 클래스 로더에 사용되는 Instrument, Instrument-Tomcat 모듈을 제외한
모든 스프링 모듈은 아파치 Commons 프로젝트의 Logging 라이브러리를 사용해 로그를 남기도록 되어 있다. - 따라서 Commons Logging은 모든 스프링 프로젝트에 포함시켜야 하는 필수 라이브러리다.
- Commons-Logging 대신 SLF4J를 사용한다면 jcl-over-slf4j로 대체할 수도 있다.
- 재패키징 모듈인 ASM, 자바 에이전트와 톰캣 클래스 로더에 사용되는 Instrument, Instrument-Tomcat 모듈을 제외한
모듈별 선택 라이브러리
- ASM 모듈
- 단순히 ASM 라이브러리를 재패키징한 것이기 때문에 다른 의존 라이브러리는 없다.
- Core 모듈
- 필수 라이브러리는 없다.
- AspectJ Weaver 1.6.8
: AspectJTypeFilter 클래스에서 사용되며 Aspect 기능을 활용하는 다른 모듈이 함께 사용된다. - JBoss VFS 2.1.0.GA
: JBoss 서버가 제공하는 VFS에 대한 VFS 리소스 추상화 기능을 위해 사용된다.
JBoss VFS의 리소스를 직접 활용해야 할 경우에 사용한다.
- Beans 모듈
- 필수 의존 라이브러리가 없다.
- CGLib 2.2.0/2.1.3
: 프로토타입 빈의 DL 기능을 자동으로 추가해주는 메소드 주입을 사용할 때 필요하다.
- AOP 모듈
- AOP Alliance 1.0.0
: AOP 모듈의 필수 라이브러리로 어드바이스를 만들 때 사용하는 Advice, MethodInterceptor 인터페이스 등이 정의된다. - Jamon API 2.4.0
: 애플리케이션 모니터 API인 Jamon API를 이용한
성능측정용 어드바이스인 JamonPerformanceMonitorInterceptor에 사용된다.
AOP를 이용한 간단한 성능측정/모니터링 기능이 필요한 경우에 사용할 수 있다. - CGLib 2.2.0/2.1.3
: CGLib 기반의 프록시를 만들 때 사용하며 인터페이스 대신 클래스 상속을 통한 클래스 프록시를 만들 수 있다. - Commons Pool 1.5.3/1.3.0
: AOP에서 사용되는 TargetSource 구현의 하나인 CommonsPoolTargetSource에서 사용된다.
TargetSource를 풀링 방식으로 설정해서 사용할 수 있는 고급 사용자에게 필요한 기능이다. - AspectJ Weaver 1.6.8
: AspectJ 스타일의 스프링 AOP를 사용할 경우에 필요하다.
AspectJ의 문법과 애노테이션 등을 차용해서 스프링 AOP를 만들기 위해 필요한 것으로
Aspect 애노테이션을 사용해 만든 어드바이스, 포인트컷 등을 쓰려면 추가해야 한다.
- AOP Alliance 1.0.0
- Expression 모듈
- 의존 라이브러리가 없다.
- Context 모듈
- BeanShell 2.0.0.b4
: 스프링의 BeanShell 언어 지원 기능을 사용할 때 필요하다.
스프링은 BeanShell 스크립트를 실행하거나 빈을 등록해서 사용할 수 있는 기능을 제공한다. - Backport 3.0.0
: JSR-166 Backport를 이용한 스케줄링 기능을 사용할 때 필요하다. - JSR-250 Common Annotations 1.0.0
: @Resource, @PostContruct 같은 표준 애노테이션을 정의하며 애노테이션을 이용한 DI를 적용하려면 필요하다.
단 JDK 6이나 JavaEE 1.5 이상에서는 기본적으로 제공되기 때문에 포함하지 않아도 된다. - EJB 3.0.0
: 스프링의 EJB 지원 기능에 필요하며 EJB 빈을 프록시를 통해 DI 해서 사용할 경우에 쓴다. - JSR-330 DI for Java 1.0.0
: @Inject와 Provider<T> 같은 JSR-330 애노테이션을 이용해 DI 하는 경우에 필요하다. - JMS 1.1.0
: 스프링의 JMS 지원 기능을 사용하는 경우에 필요하다. - Java Persistence API 1.0.0
: JPA 지원을 위한 클래스로더에서 필요하다. - JSR-303 Bean Validation 1.0.0.GA
: JSR-303의 빈 검증기를 이용한 검증 기능을 적용할 때 필요하다.
웹 환경의 모델 검증에도 사용되지만 독자적으로 검증기를 만들어 적용할 수도 있다. - JAX-WS 2.1.1
: JAX-WS의 @WebServiceRef 애노테이션을 사용할 때 필요하다. - CGLib 2.2.0/2.1.3
: 스코프 프록시, JMX, 스크립팅 언어 지원 기능 등에 사용한다. - AOP Alliance 1.0.0
: 스프링 이벤트, EJB, JMX, JNDI, 리모팅, 스크립팅 등 많은 기능에 사용하므로 반드시 포함한다. - AspectJ Weaver 1.6.8
: 로드타임 위버 기능에 사용한다. - Groovy 1.6.5
: Groovy 스크립팅 언어 지원 기능에 사용한다.
Groovy를 이용해서 빈을 만들어서 사용하거나 Groovy 코드를 실행시켜야 할 때 필요하다. - Joda Time 1.6.0
: Joda를 이용한 포매터에 사용한다. - JRuby 1.4.0
: JRuby 스크립팅 언어 지원 기능에 사용한다.
JRuby를 이용해 만든 빈을 사용할 경우에 필요하다.
- BeanShell 2.0.0.b4
- Context.Support 모듈
- CommonJ 1.1.0
: CommonJ를 이용한 스케줄링 기능을 사용할 때 필요하다. - FreeMarker 2.3.15
: FreeMarker 템플릿의 지원 기능에 필요하다.
FreeMarker는 스프링 MVC의 뷰로도 사용하지만 독립적인 템플릿 엔진으로 활용할 수도 있다. - JAF 1.1.0
: JavaMail을 이용한 메일 메시지 추상화에 필요하다. - Java Mail 1.4.0
: JavaMail을 이용한 메일 메시지 추상화에 필요하다. - Ehcache 1.6.2
: EhCacheFactoryBean을 이용해 EhCache 빈을 생성할 경우에 필요하다. - JasperReports 2.0.5
: JasperReport를 이용할 때 활용할 수 있는 편리한 기능을 제공해주는 JasperReportUtils를 사용할 때 필요하다. - Velocity 1.5.0
: Velocity 템플릿 엔진을 사용하는 경우에 포함한다. - Commons Collection 3.2.1/3.2.0
: Velocity를 위한 리소스 로더에 사용한다. - Quartz 1.6.2
: Quartz를 이용한 스케줄링 기능을 사용할 때 필요하다.
- CommonJ 1.1.0
- Transaction 모듈
- AOP Alliance 1.0.0
: Transaction 모듈의 필수 라이브러리로 JPA의 예외자동 변환용 AOP와 트랜잭션 AOP에 필요하다. - WebSphere UOW 6.0.2.17
: 웹스피어 UOW 트랜잭션 매니저를 사용할 때 필요하다.
웹스피어에 특화된 트랜잭션 확장 기능을 사용할 수 있게 해준다. - EJB 3.0.0
: EJB 3의 @TransactionAttribute 애노테이션을 트랜잭션 속성을 부여하는데 사용한다. - Java Resource 1.5.0
: 스프링의 JCA 지원 기능을 사용할 때 필요하다. - Java Transaction 1.1.0
: JTA 트랜잭션 매니저를 사용할 때 필요하다.
- AOP Alliance 1.0.0
- JDBC 모듈
- C3P0 0.9.1.2
: 스프링 애플리케이션에서 애용되는 애플리케이션 내장 DB 커넥션 풀의 하나인 C3P0를 사용할 때 추가한다.
Native JDBC 오브젝트를 가져와야 하는 특별한 경우에 사용한다. - Java Transaction 1.1.0
: JTA Lob 지원 기능에 사용한다.
JTA를 사용한다면 이미 JDBC의 의존모듈인 Transaction 모듈에서 포함시켰을 것이므로 신경 쓰지 않아도 된다. - Derby 10.5.1000001.764942
: 내장형 DB인 Derby를 사용할 경우에 필요하며 스프링의 내장형 DB 추상화 기능에도 사용한다. - H2 1.0.71
: 내장형 DB인 H2를 사용할 경우에 필요하다. - HSQLDB 1.8.0.9
: 내장형 DB인 HSQLDB를 사용할 경우에 필요하다.
- C3P0 0.9.1.2
- ORM 모듈
- iBatis 2.3.4.726
: iBatis를 이용해 DAO를 만들 때 필요하다. - JDO 2.1.0
: JDO를 이용해 DAO를 만들 때 필요하다. - Java Persistence API 1.0.0
: JPA를 이용해 DAO를 만들 때 필요하다. - Servlet 2.5.0
: 서블릿 환경에서 하이버네이트의 OpenSessionInViewFilter나
JPA의 OpenEntityManagerInViewFilter 기능을 이용할 때 필요하다. - Java Transaction 1.1.0
: Hibernate 3에서 사용하므로 반드시 추가한다. - TopLink Essentials 2.0.0.b41-beta2
: JPA 구현 엔진으로 TopLink Essentials를 사용할 때 추가한다. - AOP Alliance 1.0.0
: Hibernate나 JPA의 템플릿/콜백을 대신해서 AOP 방식으로 세션과 엔티티 매니저를 바인딩할 경우에 필요하다.
기본적으로 트랜잭션 매니저를 사용하고 트랜잭션 AOP를 적용하고 있다면 ORM 모듈에서는 신경 쓰지 않아도 된다. - OpenJPA 1.1.0
: JPA 구현 제품의 하나인 OpenJPA를 사용할 경우에 필요하다. - Eclipse Persistence JPA 1.0.1
: 이클립스의 JPA 구현 제품인 EclipseLink JPA를 사용할 때 추가한다. - Hibernate 3.3.1.GA
: 스프링이 지원하는 하이버네이트의 최신 버전은 3.3.1.GA이며
하이버네이트를 이용한 DAO를 작성하거나 하이버네이트를 JPA 구현으로 사용할 경우에 모두 필요하다. - Hibernate Annotation 3.4.0.GA
: 하이버네이트의 애노테이션을 이용한 ORM 설정을 사용하는 경우에 필요하다. - Hibernate EJB 3.4.0.GA
: 하이버네이트를 JPA 엔진으로 사용하는 경우에 필요하다.
- iBatis 2.3.4.726
- Web 모듈
- Caucho 3.2.1
: Burlap/Hessian을 이용한 리모팅 기능을 사용할 때 필요하다. - Java EL 1.0.0
: Web 모듈에서 JSF 지원 기능에 필요하다. - Java Faces 1.2.0.08
: JSF를 스프링의 웹 기술로 사용할 때 필요하다. - Portlet 2.0.0
: 포틀릿을 사용할 때 필요하다. - Servlet 2.5.0
: 서블릿 기반의 웹 모듈의 핵심 API로
서블릿 API를 직접 코드에서 사용하지 않는다면, 서버에서 기본적으로 제공해주므로 신경 쓰지 않아도 된다. - JSP 2.1.0
: 스프링의 태그 지원 기능에서 사용한다.
서버에서 지원되므로 대부분의 경우 포함시키지 않아도 됨 - JAX-RPC 1.1.0
: JAX-RPC를 이용한 리모팅 기능을 만들 때 사용 - XML SOAP 1.3.0
: JAX-WS를 사용해 리모팅 기능을 만들 때 필요하다. - JAX-WS 2.1.1
: JAX-WS를 사용해 리모팅 기능을 만들 때 필요하다. - AOP Alliance 1.0.0
: 모든 리모팅 기능에 필요하다. - Axis 1.4.0
: Axis를 이용해 웹 서비스를 구현할 때 필요하다.
하지만 Axis 지원 기능은 앞으로 제거될 예정이므로 JAX-WS를 사용하도록 권장한다. - Commons Fileupload 1.2.0
: 웹에서 파일 업로드 기능을 사용할 때 필요하다. - Commons HttpClient 3.1.0
: REST 템플릿을 사용할 때 필요하다. - Log4J 1.2.15
: Log4jConfigListener를 이용해 애플리케이션 레벨의 Log4J 설정을 해줄 때 필요하다. - Jackson Mapper 1.4.2
: JSON 메시지 컨버터에 사용한다.
- Caucho 3.2.1
- Web.Servlet 모듈
- iText 2.0.8
: iText를 이용한 PDF 뷰를 만들 때 필요하다. - Syndication 1.0.0
: RSS/Atom 피드 뷰를 만들 때 사용한다. - FreeMarker 2.3.15
: FreeMarker 뷰를 만들 때 사용한다. - Servlet 2.5.0
: 코드에서 서블릿 API를 직접 사용하는 경우에 필요하다. 배포 패지키에는 포함시키지 않아도 된다. - JSP 2.1.0
: JSP/JSTL 뷰와 폼 태그에 사용한다. - JSTL 1.1.2
: JSP/JSTL 뷰와 폼 태그에 사용한다. - JExcelApi 2.6.6
: JExcel API를 이용해 엑셀 뷰를 만들 때 필요하다. - JasperReports 2.0.5
: JasperReports를 이용한 뷰를 만들 때 필요하다. - POI 3.0.2.FINAL
: POI를 이용한 엑셀 뷰를 만들 때 필요하다. - Tiles 2.1.2.osgi
: Tiles 뷰에 사용한다. - Tiles Core 2.1.2.osgi
: Tiles 뷰에 사용한다. - Tiles JSP 2.1.2
: Tiles 뷰에 사용한다. - Times Servlet 2.1.2
: Tiles 뷰에 사용한다. - Velocity 1.5.0
: Velocity 뷰를 만들 때 필요하다. - Velocity Tools View 1.4.0
: Velocity 뷰를 만들 때 필요하다. - Jackson Mapper 1.4.2
: JSON 뷰를 만들 때 필요하다.
- iText 2.0.8
- Web.Portlet 모듈
- Portlet 2.0.0
: 포틀릿 API를 사용하는 경우에 필요하다. - Servlet 2.5.0
: 서블릿 API를 사용하는 경우에 필요하다. - Commons Fileupload 1.2.0
: 포틀릿에 파일 업로드 기능을 넣을 때 필요하다.
- Portlet 2.0.0
- Web.Struts 모듈
- Commpns Beanutils 1.7.0/1.8.0
: 스트럿츠 1과 연동을 위해 필요하다.
- Commpns Beanutils 1.7.0/1.8.0
- JMS 모듈
- JMS 1.1.0
: JMS API를 사용하는 경우에 필요하다. - Java Resource 1.5.0
: JMS 메시지 리스너를 등록해서 사용할 때 필요하다. - AOP Alliance 1.0.0
: JmsInvokerClientInterceptor에 사용한다.
- JMS 1.1.0
- Aspects 모듈
- AspectJ Weaver 1.6.8
: AspectJ AOP 기능을 사용하기 위해 반드시 추가한다.
- AspectJ Weaver 1.6.8
- Instrument 모듈
- 의존 라이브러리가 없다.
- Instrument.Tomcat 모듈
- 의존 라이브러리가 없다.
- Test 모듈
- 직접 의존하는 것은 JUnit과 같은 테스트 프레임워크뿐이다.
하지만 테스트 방법에 따라 DBUnit과 같은 다양한 테스트용 라이브러리가 추가로 필요할 수 있다. - JUnit 3.8.2
: JUnit 3.8.2를 이용해 테스트를 만들 때 필요하다. - JUnit 4.7.0
: JUnit 4.7을 이용해 테스트를 만들 때 필요하다.
- 직접 의존하는 것은 JUnit과 같은 테스트 프레임워크뿐이다.
'Java-Spring > 토비의 스프링 3.1' 카테고리의 다른 글
[토비의 스프링 3.1] Vol. 1 스프링의 이해와 원리 - 목차 (0) | 2024.05.28 |
---|---|
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(1) (0) | 2024.05.27 |
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(0) (0) | 2024.05.27 |
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 모듈(2) (0) | 2024.05.20 |
[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 모듈(1) (0) | 2024.05.18 |