메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

Spring 프레임워크의 개발 생산성을 높이기 위한 개발 환경

한빛미디어

|

2005-10-21

|

by HANBIT

17,483

저자: 박재성
출처: JAVAJIGI.NET


이 문서는 Spring 프레임워크를 이용하여 개발을 진행하기 위하여 필요한 개발 환경에 대하여 다룬다. 각각의 항목에 대한 구체적인 내용은 해당 Space에 문서를 참조하도록 할 것이다. 그러나 이 문서에서 제시하는 방향으로 개발환경을 세팅하고 개발을 진행할 경우 Spring 프레임워크를 이용하는 애플리케이션 뿐만 아니라 대부분의 웹 애플리케이션 개발에 유용하게 사용될 것이다.

Eclipse 개발툴 설치

JDK, Eclipse 개발 환경
- JDK 버전 : 1.4.2 이상
- Eclipse 버전 : 3.1 (3.0버전도 예제를 실행하는데는 큰 문제가 없을 것으로 생각한다.)

Eclipse는 현재 많은 개발자들이 사용하고 있는 통합 개발 환경(IDE)이다. 오픈 소스로 개발되고 있기 때문에 무료료 사용할 수 있으며, 수 많은 플러그인들을 통하여 자신이 원하는 형태의 개발환경으로 세팅하는 것이 가능하다. Eclipse 개발툴 설치에 관한 문서는 IDE:Eclipse 시작하기문서를 참고하기 바란다. JDK 설치에서부터 설명해야하지만 IDE:Eclipse 시작하기문서에서 JDK 설치부터 Eclipse 설치까지 다루고 있기 때문에 생략하도록 한다.

Eclipse 사용에 익숙한 개발자라면 이 절을 생략해도 된다. 단, 앞으로의 환경 세팅과 더불어 예제소스를 실행해 보기 위해서는 Eclipse가 설치되어 있어야 한다.

Tomcat 서블릿 컨테이너 설치 및 환경 세팅

Tomcat 개발 환경
- Tomcat 버전 : 5.0.x ( Tomcat 5.5를 사용할 경우에는 JDK 5.0 이상이 설치되어 있어야 한다.)

Spring 프레임워크 기반하에서 개발되는 애플리케이션을 실행하기 위한 컨테이너로 Tomcat을 사용한다. 가장 범용적으로 많이 사용하는 컨테이너이고 EJB를 지원하지 않을 경우에는 Tomcat 서블릿 컨테이너만으로 충분한 개발속도의 향상을 가져올 수 있다.

Tomcat 설치에서부터 환경 세팅에 관한 내용은 OE:Tomcat 서버 설치 및 환경 세팅 문서를 참고하기 바란다. 이 문서의 과정에서는 시스템 환경 변수로 설정되어 있는 CATALINA_HOME 정보를 ANT가 빌드할 때 이용할 것이기 때문에 시스템 환경변수에 설치한 Tomcat 서버의 디렉토리를 CATALINA_HOME으로 잡아주어야 한다.

또한, ANT를 이용하여 개발중인 애플리케이션의 Context를 재시작하고 관리할 것이다. 이 기능을 이용하기 위해서는 Tomcat의 Manager를 사용할 수 있어야 한다. Tomcat의 이 기능은 Tomcat이 정상적으로 설치하면 사용할 수 있는 기능이다. 설치한 Tomcat 서버를 시작한 다음 http://localhost:8080/admin, http://localhost:8080/manager/html 로 접근해 보기 바란다.

정상적으로 접근이 되면 OE:Tomcat 서버 설치 및 환경 세팅 문서에서 다루는 바와 같이 애플리케이션 개발을 위하여 manager 애플리케이션에 접근할 수 있는 권한을 가지는 사용자를 CATALINA_HOME/conf/tomcat-users.xml 파일에 추가해야 한다.

MySQL 데이터베이스 설치 및 환경 세팅

MySQL 개발 환경
- MySQL 버전 : 4.1.x

OE:MySQL 설치 문서를 참고하여 MySQL 데이터베이스를 설치한다. MySQL에 접근하기 위한 계정은 우선 설치하면서 생성한 root 권한으로 접근할 예정이다.

Spring 프레임워크를 위한 템플릿 애플리케이션 생성

Spring 개발 환경
- Spring 프레임워크 버전 : 1.2.x
- Equinox 버전 : 1.4

Spring 프레임워크를 이용하여 개발을 진행할 경우 Spring 프레임워크와 관련한 수 많은 jar파일, 설정파일들을 먼저 세팅한 다음 개발을 진행하게 된다. 이 같은 파일들을 하나씩 설정하기에는 여간 귀찮은 작업이 아니다. 또한 Spring 프레임워크 기반으로 개발되어 있는 작은 애플리케이션이 있다면 이를 참고하면서 개발을 진행하는 것이 개발속도를 향상 시킬 수 있다.





아무것도 없는 맨땅에서부터 개발하는 것보다는 기본적은 jar파일, 설정파일, 샘플 애플리케이션 기반하에서 확장해 나가는 것이 Spring 프레임워크에 더 쉽게 접근할 수 있을 것이다. 이 같은 기능을 할 수 있도록 지원하는 것이 AppFuse에서 개발한 샘플 애플리케이션이 Equinox이다. Equinox를 이용할 경우 Spring 프레임워크 기반하에서 다음과 같은 다양한 기술들로 개발할 수 있는 샘플 애플리케이션을 생성할 수 있다.

• 데이터베이스
- 현재 사용되고 있는 대부분의 관계형 데이터베이스를 모두 지원하고 있다.
• Persistence Layer
- Spring JDBC 추상 레이어
- Hibernate ORM 프레임워크
- IBatis ORM 프레임워크
- JDO
- OJB
Presentation Layer
- Struts 프레임워크
- Webwork 프레임워크
- TapeStry 프레임워크
- JSF
• View Technology
- JSP
- Velocity
- FreeMarker

위 기술들 중 Spring 프레임워크와 접목해서 개발을 진행하고자할 경우 Equinox를 이용하여 Spring 프레임워크와 통합되어 있는 샘플 애플리케이션을 생성할 수 있다.

Equinox를 이용하여 Spring 기반의 샘플 애플리케이션 생성하는 방법 문서를 바탕으로 Equinox를 이용하여 원하는 기술들의 통합된 샘플 애플리케이션을 생성할 수 있다.

이 문서는 Velocity + Spring MVC + Spring + Hibernate의 기술들을 조합하여 애플리케이션을 개발하도록 하겠다.

먼저 Equinox를 이용하여 Spring 기반의 샘플 애플리케이션 생성하는 방법 문서의 "Equinox를 Hibernate + MySQL에 세팅하기"절을 참고하여 MySQL 데이터베이스에 기반으로 샘플 애플리케이션을 세팅한다. 그 다음 "Equinox의 View로 Velocity를 사용할 수 있도록 세팅하기"절을 참고하여 View를 위한 기술로 Velocity를 사용하도록 세팅한다.

이상의 과정을 성공적을 마쳤다면 Tomcat을 시작한 다음 DOS prompt에서(혹은 Eclipse내에서) EQUINOX_HOME 디렉토리로 이동한 다음 deploy target을 실행하여 지금까지 빌드한 샘플 애플리케이션을 배포한다.

http://localhost:8080/equinox로 접근했을 때 다음과 같은 화면을 볼 수 있다면 세팅이 성공적으로 완료된 것이다.


.


ANT를 이용한 효율적인 애플리케이션 개발 프로세스

ANT 개발 환경
- ANT : ANT는 Eclipse 3.1에 내장되어 있는 ANT를 사용한다.

Equinox 샘플 애플리케이션을 생성하면 부가적으로 ANT를 이용하여 Deploy에서부터 WAR, Tomcat 서버의 애플리케이션을 Install, Reload, Remove 등의 작업까지 자동적으로 지원할 수 있다.


시스템 환경 변수에 CATALINA_HOME을 추가해야 함

Equinox의 build.xml에서 현 시스템에 설치되어 있는 Tomcat의 위치를 찾기 위하여 시스템 환경변수에 설정되어 있는 CATALINA_HOME을 참고한다. 그러므로 Tomcat을 설치한 다음, Tomcat의 설치 경로를 시스템 환경 변수에 CATALINA_HOME으로 추가해 주어야 한다.

만약 이미 설정되어 있는 CATALINA_HOME이 존재한다면 build.xml의 mmlt;property name="tomcat.home" value="${env.CATALINA_HOME}"/mmgt; 에서 value를 설치한 Tomcat의 절대경로로 바꾸어 주어도 된다.


Spring을 이용할 경우 개발하는 애플리케이션은 Servlet 스펙 기반하에서 개발하는 것이 가능하다. 그러므로 애플리케이션을 개발하기 위하여 Servlet Container를 이용하면 충분하다. 대부분의 애플리케이션이 Servlet 스펙에는 충실하게 따르고 있기 때문에 Tomcat Servlet Container에서 개발한 애플리케이션이 Weblogic, WebSphere등에서 특별한 설정없이 곧바로 실행되는 것을 볼 수 있다. 그러므로 Spring 프레임워크를 기반으로 애플리케이션을 개발할 때 Weblogic, WebSphere와 같이 무거운 WAS를 사용하기 보다는 Tomcat과 같이 가벼운 Servlet Container에서 개발한 다음 실 서버에 배포하는 것도 개발 생산성을 향상 시킬 수 있는 좋은 방법이다.

따라서 이 강좌에서는 Tomcat 서버를 기반으로 애플리케이션을 개발할 것이다. 또한 Equinox에서 제공하는 build.xml을 이용하여 애플리케이션을 배포한 다음 배포한 애플리케이션을 Tomcat 서버에서 Reload하는 방식으로 개발을 진행해 나갈 것이다.

Tomcat에서 제공하는 ANT Task를 이용하여 애플리케이션을 개발하는 이유는 다음과 같다.

- 자바 소스의 변경이나 설정파일이 변경될 경우 서버를 재시작해야한다. 그러나 서버를 재시작하는데 서버에 Deploy되어 있는 모든 애플리케이션을 내렸다 올리기 때문에 아무래도 많은 시간이 소요된다. 이럴 경우 Tomcat의 ReloadTask를 이용하면 서버가 운영중인 상태에서 특정 애플리케이션만 Reload할 수 있으므로 개발 사이클 속도를 줄일 수 있다.

- Eclipse + Tomcat 플러그인을 설치할 경우 클래스가 변경될 때마다 애플리케이션이 Reload되는 경우가 발생한다. 이럴 경우 세션 정보들이 삭제되어 매번 같은 정보를 입력하는 경우가 발생한다. Tomcat의 ANT Task를 이용할 경우 원하는 시점에만 빠른 속도로 애플리케이션을 재시작할 수 있다.


Spring 프레임워크를 이용할 경우 모든 레이어의 테스트가 애플리케이션 서버에 배포되지 않은 상태에서 테스트하는 것이 가능하다. 그러므로 서버의 재시작이나 배포하는 작업 없이 소스 수정, 컴파일, 테스트, 소스 수정, 컴파일, 테스트와 같은 짧은 개발 사이클을 가져갈 수 있다. 이 같이 애플리케이션 서버없는 상태에서의 테스트 용이성은 짧은 개발 사이클로 인한 제품의 Quality를 높일 수 있으며, 개발자들의 삶의 질을 향상 시킬 수 있다.

Spring 프레임워크를 이용할 경우 이 같은 테스트 용이성을 얻을 수 있다는 부분에 대해서는 앞으로 강좌를 진행해 나가면서 살펴보도록 하겠다.


Spring 프레임워크를 이용할 경우의 개발 사이클을 보면 다음과 같다. 최종 View에서 테스트를 진행하지 않는 상태에서는 애플리케이션 서버에 배포할 필요없이 소스 수정, 컴파일, 테스트, 소스 수정, 컴파일, 테스트(TDD라면 테스트, 소스수정, 컴파일, 테스트..로 진행될 것이다.)로 진행될 것이다.

만약 View화면을 통하여 최종 테스트를 진행하고자 한다면 소스수정, 컴파일, ANT를 통한 Deploy, ANT를 통한 애플리케이션 Reload, 테스트, 소스수정, 컴파일, ANT를 통한 Deploy, ANT를 통한 애플리케이션 Reload, 테스트와 같은 사이클을 가질 것이다.

개발 속도를 향상 시키기 위한 좋은 방법은 가능한 모든 테스트를 애플리케이션 서버에 배포하지 않은 상태에서 해야한다. Spring 프레임워크를 이용할 경우 애플리케이션 서버에 배포하지 않은 상태에서 거의 모든 영역을 테스트하는 것이 가능하도록 지원해 준다. 이 같은 효과를 어떻게 얻을 수 있게 되는지는 앞으로 진행되는 강좌에서 다루도록 하겠다
TAG :
댓글 입력
자료실

최근 본 상품0