지금까지 스프링과 메이븐을 주제로 각종 서적이 출간됐지만 해당 기술을 실무에 적용하는 데 도움을 줄 수 있는 응용 기술서는 부족하다고 느껴왔다. 응용 기술서는 개발자로서 첫 발을 내 딛는 신입사원 등에게 특히 필요하며, 실무 적응력과 개념 정립이 필요한 시기에 그들을 이끌어 주는 데 큰 도움을 줄 수 있다. 이 책은 이러한 목적으로 집필된 응용 기술서로서, 초급 개발자와 더불어 중급 이상의 개발자에게도 유용할 것이다.
국내 프로젝트 상황을 둘러보면 신규 프로젝트를 진행할 때 프로젝트 설계나 문서화가 제대로 준비되지 않은 경우를 흔히 볼 수 있다. 이 책에서는 보편적인 웹 애플리케이션 개발을 주제로 범용적으로 적용할 수 있는 참조 구현물을 제공한다. 따라서 이 책에서 제공하고 있는 설계물을 실무 프로젝트에 적용한다면 설계와 문서화라는 두 가지 고민을 쉽게 해결할 수 있을 것이다.
이 책의 최종 목표는 표준화 프레임워크를 정의하는 데 있다. 많은 개발사들이 해마다 수많은 프로젝트를 진행하고 있지만 표준화 프레임워크가 정의돼 있지 않은 경우가 많다. 이로써 프로젝트를 진행할 때 업무의 지연과 혼선이 일어나고, 유지보수에 적지 않은 어려움을 발생한다. 이 책에서는 표준화 프레임워크를 정의하고자 각 기능을 컴포넌트 단위로 모듈화했으며, CBD 및 TDD 기반으로 개발해 나갈 수 있는 기틀을 마련한다. 따라서 사내 표준화 프레임워크를 준비하는 설계자라면 이 책을 참고해서 사내 프로젝트 특성에 맞는 자체 프레임워크로 발전시켜 나갈 수 있을 것이다.
이 책은 스프링을 활용한 프레임워크의 설계 및 개발을 위한 가이드로서, 자바와 스프링에 대한 기본 지식이 있는 독자를 대상으로 한다. 특히 이 책은 다음과 같은 독자에게 유익할 것이다.
- 스프링 프레임워크의 기본 지식은 갖췄으나 활용 경험이 부족한 분
- 메이븐의 활용 또는 설계 경험이 부족한 분
- 신규 프로젝트를 진행하려고 하나 프레임워크 설계 및 문서화가 준비되지 않은 분
- 사내 표준화 프레임워크 설계를 준비하려는 분
이 책은 메이븐을 활용한 CBD 및 TDD 개발 환경을 제시하고, 이와 더불어 스프링 기반의 표준화 프레임워크의 설계 방법을 보여준다. 표준화 프레임워크를 설계하고자 하는 분은 이 책에서 제시하는 모델을 기반으로 사내 프로젝트 특성에 맞는 표준화 프레임워크로 발전시켜 나갈 수 있을 것이며, 급히 프로젝트를 진행해야 하는 상황에서는 이 책에서 제공하는 설계물을 바탕으로 프로젝트 표준을 신속히 제공하여 업무 진행을 원활하게 할 수 있을 것이다. 또한 이 책에서 지향하는 개념에 맞춰 프로젝트를 진행한다면 개발자들이 자연스럽게 CBD 및 TDD 개념을 몸으로 익힐 수 있을 것이다.
강위민
1999년부터 자바 프로젝트를 진행해 왔으며, 한국 썬마이크로시스템즈에서 전임강사를 역임한 바 있다. 『Core EJB(영진닷컴)』을 비롯해 『Applied BluePrint Workshop(한국 Sun)』, 『온라인 EJB 강좌(한국 IBM)』을 집필했고, 현재는 체계적인 프로젝트 진행을 위한 프로젝트 표준화 및 개발 프로세스의 시스템화에 관심이 있다.
지은이 글
실무에서 일어나는 문제점의 가장 핵심적인 원인은 표준화가 이뤄지지 못했기 때문에 발생하는 문제라 생각하고 표준화의 필요성과 표준화를 위한 참조 구현물을 제안해 보고 싶었다.
스프링과 메이븐을 주제로 각종 서적이 출간됐지만 실무에 적용하는 데 도움을 줄 수 있는 응용 기술서가 부족하다고 느꼈다. 응용 기술서는 개발자로서 첫 발을 내딛는 신입사원에게 특히 필요하다고 생각하며, 실무 적응력과 개념 정립이 필요한 시기에 그들을 올바르게 이끌어 줄 가이드가 필요하다고 느꼈다.
아직 국내 프로젝트에서 메이븐의 보급과 활용 수준이 그리 높지 않은 듯하다. 그 이유는 메이븐에 대한 전반적인 이해 부족에서 비롯된 것이라 생각한다. 저자는 초보자에게 메이븐의 동작 원리와 활용법을 간단하면서도 효과적으로 전달할 수 있는 학습의 장을 마련해 보고 싶었고, 이와 더불어 메이븐을 활용한 모듈 단위의 프로젝트 개발 환경을 소개하고 싶었다. 메이븐의 모듈 단위 개발 환경은 CBD 및 TDD 방법론을 적용하는 데 이상적인 프로젝트 구성을 제공할 수 있다.
신규 프로젝트를 진행할 때는 프로젝트 설계와 문서화가 제대로 준비되지 않은 경우를 흔히 접한다. 저자는 이 책과 더불어 어느 프로젝트에서나 범용적으로 적용할 수 있는 참조 구현물을 제공해서 그러한 고민을 덜어줄 수 있기를 바랐다.
- Chapter 01. 프레임워크 소개
- 사내 표준화 프레임워크의 필요성
- 웹 애플리케이션 설계 현황
- 프레임워크 컴포넌트 소개
- 메이븐 프로젝트 구조
- store-root 프로젝트
- store-comp 프로젝트
- comp-user 프로젝트
- store-web 프로젝트
- web-frontend 프로젝트
- 프로젝트 빌드 및 패키지
- Chapter 02. 인프라 컴포넌트
- crypto 패키지
- CipherTemplate
- DigesterTemplate
- dao 패키지
- AbstractIBatisDao
- dto 패키지
- AbstractModel
- event 패키지
- ApplicationEventListener
- ApplicationEventHandler
- EventHandlerAggregator
- exception 패키지
- ApplicationException
- 사용자 정의 예외 클래스
- MessageException
- key 패키지
- Constant
- WebAttrKey
- WebParamKey
- test 패키지
- ObjectLoader
- type 패키지
- Symbolic
- 사용자 정의 데이터 타입
- AbstractSymbolicEnumTypeHandler
- 사용자 정의 타입 핸들러
- util 패키지
- BeanFinder
- ShellCommander
- MessageUtil
- SessionUtil
- WebAttrAnalyzer
- web.filter, web.servlet 패키지
- ParameterInjectionFilter
- ParameterInjectionServlet
- AccessProtectFilter
- web.form 패키지
- AbstractOptionTemplate
- CharRangeOptionTemplate
- IntegerRangeOptionTemplate
- ObjectOptionTemplate
- CalendarTemplate
- Enum 타입 템플릿
- crypto 패키지
- Chapter 03. 웹 컴포넌트
- 웹 컴포넌트의 디렉터리 구조
- 스프링 웹 MVC 구성
- DataSource 및 iBatis 설정
- 타일즈 및 다국어 지원
- 환경설정 파일 및 PropertyPlaceholder
- 예외 페이지
- Validator
- 스프링 시큐리티 설정
- Chapter 04. 비즈니스 컴포턴트
- 비즈니스 컴포넌트의 디렉터리 구조
- User 컴포넌트
- 테이블 정의
- type, type.handler 패키지
- dto 패키지
- dao 패키지
- web.listener 패키지
- event, event.handler 패키지
- service 패키지
- 스프링 컨텍스트 설정
- 웹 애플리케이션
- Control 컴포넌트
- 공통 코드 및 캐시 관리
- 동적 스케줄링
- 제어 센터
- 다중 서버 파일 업로드
- 컴포넌트 설계 가이드
- 단위 테스트
- Chapter 05. 메이븐 퀵 스터디
- 메이븐 프로젝트 생성
- 메이븐 저장소
- 중앙 저장소
- 로컬 저장소
- 내부 저장소
- 프로젝트 빌드 및 라이프사이클
- 의존성
- 웹 애플리케이션 컨테이너 배포
- 프로젝트 상속 및 집합 관계 구성
- 프로젝트 상속 관계 구성
- 프로젝트 집합 관계 구성
- Chapter 06. 개발 환경 구축
- JDK 설치
- 프로젝트 소스 설치
- 메이븐 설치
- STS(SringSource Tool Suite) 설치
- 톰캣 설치
예제코드 관련 GitHub 페이지
- GitHub 페이지: https://github.com/wikibook/springmaven
- ZIP 형식으로 다운로드: https://github.com/wikibook/springmaven/archive/master.zip