더북(TheBook)

2.2.1 스프링 모듈

스프링 5.1.x.RELEASE 버전은 21개 모듈을 제공합니다. 표 2-1은 각 모듈의 JAR 파일과 모듈에 대한 설명입니다. 모듈의 실제 파일명은 spring-aop.5.1.x.RELEASE.jar처럼 생겼지만, 간단히 표기하기 위해 모듈 이름인 aop만 표에 표시했습니다.

 

▼ 표 2-1 스프링이 제공하는 모듈

모듈

설명

aop

이 모듈에는 애플리케이션에서 스프링의 AOP 기능을 사용하는 데 필요한 모든 클래스가 들어 있습니다. 또한, 선언적 트랜잭션 관리처럼 스프링이 AOP를 통해 제공하는 다른 기능을 사용하려면 애플리케이션에 이 JAR 파일을 포함해야 합니다. 추가로 이 모듈에는 AspectJ와 연동을 위한 클래스가 포함돼 있습니다.

aspects

이 모듈에는 AspectJ AOP 라이브러리와 고급 연동에 사용되는 클래스가 들어 있습니다. 예를 들어 스프링 구성에 XML이 아닌 자바 클래스를 사용하려 하며 AspectJ 스타일의 애너테이션 기반 트랜잭션 관리가 필요하다면 이 모듈을 사용해야 합니다.

beans

이 모듈에는 스프링 빈 조작에 필요한 모든 클래스가 들어 있습니다. 이들 클래스는 대부분 스프링의 빈 팩터리 구현을 지원합니다. 예를 들어 스프링 XML 구성 파일과 자바 애너테이션을 처리하는데 필요한 클래스가 이 모듈에 들어 있습니다.

beans-groovy

이 모듈에는 스프링 빈 조작을 위한 그루비(Groovy) 클래스가 들어 있습니다.

context

이 모듈에는 스프링 코어의 기능을 확장한 많은 클래스가 들어 있습니다. 여기에는 스프링의 ApplicationContext 기능을 사용하는데 필요한 클래스 및 엔터프라이즈 자바빈(EJB), JNDI(Java Naming Directory Interface), JMX(Java Management Extensions) 연동에 필요한 모든 클래스가 들어 있습니다. 또한, 스프링 리모팅(Remoting) 클래스 및 동적 스크립트 언어(제이루비, 그루비, 빈쉘 등), 빈 유효성 검사(JSR-303), 태스크(Task) 스케줄링 및 실행과 연동하는 클래스가 들어 있습니다.

context-indexer

이 모듈에는 색인 작성자(Indexer) 구현 클래스가 들어있습니다. 이 색인 작성자 클래스는 META-INF/spring.components 파일에 정의된 후보 컴포넌트에 접근할 수 있게 합니다.5 핵심 클래스인 CandidateComponentIndex는 외부 용도로 사용되는 클래스는 아닙니다.

context-support

이 모듈에는 spring-context 모듈의 추가 확장 기능이 들어 있습니다. 추가 확장 기능에는 사용자 인터페이스 관점에서 메일 발송 기능, 벨로시티(Velocity), 프리마커(Freemarker), JasperReports와 같은 템플릿 엔진과 연동 등이 포함됩니다. 또한, CommonJ나 쿼츠(Quartz) 같은 다양한 태스크 실행 및 스케줄링 라이브러리와의 연동을 지원합니다.

core

모든 스프링 기반 애플리케이션에 필요한 핵심 모듈입니다. 구성 파일을 읽어 들이는 클래스처럼 모든 스프링 모듈이 공통으로 사용하는 클래스가 JAR 파일에 들어 있습니다. 또한, 함께 제공되는 유틸리티 클래스 모음은 스프링 코드 전반에 굉장히 유용하게 사용되며 애플리케이션 개발 시에도 사용할 수 있습니다.

expression

이 모듈에는 스프링 표현식 언어(Spring Expression Language, SpEL)를 위한 클래스가 들어 있습니다.

instrument

이 모듈에는 JVM 기동을 위한 인스트루먼테이션 에이전트(Instrumentation Agent)가 들어 있습니다. 이 JAR 파일은 스프링 애플리케이션에서 AspectJ로 로드타임 위빙(Load-time Weaving)을 하는 데 필요합니다.

jcl

이 모듈에는 로깅 추상화 계층을 제공하는 JCL(Jakarta Commons Logging) 관련 인터페이스가 들어 있습니다.

jdbc

이 모듈에는 JDBC를 지원하는 클래스가 들어 있습니다. DB 접속이 필요한 모든 애플리케이션은 이 모듈을 필요로 합니다. 데이터 소스, JDBC 데이터 타입, JDBC 템플릿, 네이티브(Native) JDBC 연결을 지원하는 클래스가 이 모듈에 들어 있습니다.

jms

이 모듈에는 JMS 사용에 필요한 클래스가 들어 있습니다.

messaging

이 모듈에는 메시지 기반 애플리케이션의 기반을 제공하기 위해 스프링 인티그레이션(Spring Integration) 프로젝트에서 가져온 핵심 추상화가 들어 있으며 STOMP(Simple Text Oriented Message Protocol) 메시지를 지원합니다.

orm

이 모듈은 스프링 표준 JDBC 기능을 확장해 하이버네이트, JDO, JPA, 데이터 매퍼인 아이바티스(iBATIS)처럼 널리 사용되는 ORM 도구를 지원합니다. 이 JAR 파일에 포함된 많은 클래스 파일은 spring-jdbc JAR 파일을 필요로 합니다. 그러므로 이 모듈을 사용할 때는 반드시 spring-jdbc JAR 파일을 포함해야 합니다.

oxm

이 모듈은 OXM(객체/XML 매핑) 기능을 제공합니다. XML 마샬링과 언마샬링에 사용되는 클래스와 Castor, JAXB, XML Beans, XStream과 같은 인기 있는 도구들을 지원하는 클래스들이 이 모듈에 들어 있습니다.

test

스프링은 애플리케이션 테스트를 돕기 위해 목(mock) 클래스를 제공합니다. 이들 목 클래스 상당수는 스프링 테스트 스위트 내에서 사용돼 충분한 테스트를 거쳤으며 애플리케이션 테스트를 상당히 단순하게 만들어 줍니다. 웹 애플리케이션에서는 HttpServletRequestHttpServletResponse의 목 클래스를 사용하여 단위 테스트를 손쉽게 진행할 수 있습니다. 또한 스프링은 JUnit 단위 테스트 프레임워크와 긴밀한 통합을 제공합니다. 이 모듈은 JUnit 테스트 케이스 개발을 지원하는 많은 클래스를 제공합니다. 예를 들어 SpringJUnit4ClassRunner는 단위 테스트 환경에서 간단히 스프링 ApplicationContext를 구동하게 해줍니다.

tx

이 모듈은 스프링의 트랜잭션 인프라를 담당하는 클래스를 제공합니다. 여기에는 자바 트랜잭션 API(JTA)를 지원하기 위해 추상 트랜잭션 레이어를 제공하는 클래스와 주요 업체의 애플리케이션 서버와 연동하기 위한 클래스가 포함돼 있습니다.

web

이 모듈에는 웹 기반 애플리케이션이 스프링을 사용하는 데 필수적인 클래스가 들어 있습니다. 여기에는 웹 애플리케이션 시작 시 자동으로 ApplicationContext를 시작하게 하는 클래스와 파일 업로드 지원 클래스, URL의 쿼리 문자열에서 정수(int) 값을 잘라내는 것과 같은 반복적인 작업에 유용한 많은 클래스가 포함돼 있습니다.

webflux

이 모듈에는 스프링 웹 반응형(Spring Web Reactive) 모델을 지원하기 위한 핵심 인터페이스와 클래스가 들어 있습니다.

web-mvc

이 모듈에는 스프링 자체 MVC 프레임워크와 관련된 모든 클래스가 들어 있습니다. 애플리케이션에서 별도의 MVC 프레임워크를 사용하려고 한다면 이 JAR 파일의 클래스 파일은 전혀 필요하지 않습니다. 스프링 MVC는 16장에서 자세히 설명합니다.

websocket

이 모듈은 웹소켓을 위한 자바 API인 JSR-356을 지원합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.