2012. 2. 22.

Spring 개발도구와 환경

* 본 포스트의 내용은 [토비의 스프링3] 내용에서 발췌된 것이며 Spring 3.0 을 기반으로 한다.


*
스프링으로 어떤것을 만들수 있는가?

스프링으로 만들수 있는 애플리케이션의 종류에는 제한이 없고 자바를 사용하는 모든 프로젝트에 사용할 있다. 하지만, 대부분 자바 엔터프라이즈 환경에서 동작하는 어플리케이션이다 ( 서버에서 동작하여 클라이언트에게 서비스를 제공) 가장 많이 사용하는 구조는 클라이언트가 브라우저이고, 백엔드 시스템이 DB 구성이다.


* 개발도구와 환경

1. JavaSE/JDK : JDK 5.0 or higher (JDBC 4.0 API 사용 하는 경우 JDK6.0)

2. JavaEE/J2EE : J2EE 1.4 or JavaEE 5.0 (J2EE 1.4 경우 JDK 5.0에서 사용불가능한 경우가 있으므로 주의)

3. IDE : Eclipse(or STS-SpringSource Tool Suite), NetBeans, IntelliJ IDEA

: STS - 최신 이클립스를 기반으로 주요한 스프링 지원 플러그인과 관련 도구들을 모아서 스프링 개발에 최적화되도록 구성된IDE. 스프링소스가 제공하는 플로거인 조합이 완료된 STS 사용하면, 플로그인 업데이트와 플러그인간 호환성 등에 신경쓸필요가 없으므로 편리. 게다가 tcServer 함께 설치할수 있어서 편리.

tcServer)
Spring 개발을 담당하는 SpringSource apache httpd 서버와 tomcat 개발자들이 있어서 스프링어플리케이션에 최적화된 tcServer 개발했다. 기술지원을 받을 없는 오픈소스제품과 달리, tcServer 사용하면 기술지원을 받을 있음. (개발자 버전은 무료이지만, 정식 운영서버에서 사용하고 기술지원 받으려면 유료 라이선스 구매 필요)

4. 스프링 관련 Plugin(s)

SpringIDE plugin

SpringIDE 스프링 개발에 유용한 기능을 제공하는 플러그인의 모음. 스프링 프로젝트 설정파일 생성 위저드, XML 설정파일에디터, bean 의존관계 그래프, 네임스페이스 관리 기능 등의 기능과 도구를 제공함.

STS plugin

스프링 개발과 설정파일 편집을 지원하는 SpringIDE 더해서 스프링 어플리케이션의 서버 배치와 같은 추가 기능을 제공해 준다.

STS 가 추가로 제공하는 기타 플러그인

- M2Eclipse : Maven 지원하는 Elipse plugin, 스프링은 자체로 20여개의 세부 모듈로 구성되어 있고 100 이상의 의존라이브러리가 있기 때문에 Maven 의존 관리 기능을 활용하는게 좋다.

- AJDT (AspectJ Development Tool) : Elipse 에서 AspectJ AOP 이용한 개발을 지원.

- VMCI (Virtual Machine Core Integration) : VMWare 서버 혹은 워크스테이션과의 연동을 지원하는 플러그인. STSVMWare 배치기능에 주로 사용

- 이클립스 표준 플러그인 : 이클립스에서 제공하는 주요 표준 플러그인으로 개발을 지원하는 WTP(Web Tool Platform), EMP(Elipse Modeling Project), Mylyn, DSDP(Device Software Developlemt Platform)



* 스프링 애플리케이션의 배포 단위

1. 독립 모듈 (war) : 가장 일반적

2. 엔터프라이즈 애플리케이션 (ear) : 스프링애플리케이션에서 EJB 모듈을 이용하거나 EJB모듈이 스프링어플리케이션을 이용해야 하면, EJB 스프링웹 모듈을 엔터프라이즈 애플리케이션으로 통합해서 배포해야 한다.

3. 백그라운드 서비스 모듈 (rar) : rar 리소스 커넥터를 만들어 배포할 사용하는 방식인데, 스프링어플리ㅔ이션이UI 없고, 서버내에서 백그라운드 서비스 처럼 동작할 필요가 있다면 rar 모듈로 만들어 배포할 있다.



*
라이브러리 관리와 빌드

스프링은 자체로 20여개의 jar 모듈과 직접 참조하는 100 이상의 의존 라이브러리가 있다. 이들의 버전관리도 문제지만, 모든 라이브러리가 사용되는게 아니므로, 라이브러리를 선정하는 것도 문제이다.

20여개이 모듈중 몇개는 필수모듈이지만 외의 모듈은 애플리케이션의 아키텍처와 사용기술에 따라 서택적으로 적용할 있다. 또한 스프링 모듈 사이에도 의존관계가 있고, 모듈의 의존 관계는 필수와 선택으로 나뉠 잇다.

- Elipse 같은 IDE 자동 빌드 기능이 있고, 관련 빌더를 추가/확장 하는 것으로 빌드 작업을 간소화 시킬 있지만, IDE 통한 빌드 환경이 아닌 경우에도 일관성 있는 빌드가 가능하도록 만들기 위해서, Maven 이나 Ant 같은 환경에 독립적인 빌드 툴을 함께 사용하는것이 바람직 하다. 절차적인 스크립트와 비슷한 Ant 달리 Maven POM 이용하여 선언적으로 관리할 있다. 매력적인 점은 Maven 의존 라이브러리 관리 기능이 Transitive (전이적)이고, 이는 스프링의 모든 모듈이 POM 정보를 가지고 있으므로, 스프링을 통한 라이브러리 관리를 좀더 편리하게 도와준다.



* 관련 web sites

* STS : http://www.springsource.com/downloads/sts
* Ecllipse : http://www.eclipse.org/downloads
* Eclipse Maven Plugin : http://www.eclipse.org/m2e/

댓글 없음:

댓글 쓰기