• 스프링 3 레시피
  • 친절한 스프링 프레임워크 과제 해결서

  • 게리 막, 조시 롱, 다니엘 루비오 지음
  • 고종봉, 백기선, 유윤선 옮김

  • 오픈소스 & 웹 시리즈 _ 029
  • ISBN: 9788992939768
  • 45,000원 | 2011년 03월 30일 발행 | 1192쪽



여러분은 지금, 어렵게만 느껴졌던 스프링 프레임워크를 맛있게 요리해줄 요리책(Recipe)을 만났습니다. 이 책은 스프링으로 할 수 있는 수많은 요리들을 메뉴별로 분류하고, 요리 과제와 요리 방법에 대해 풍부한 예제와 사례를 통해 설명하고 있습니다. 이 책을 통해 여러분은, 스프링을 이용해 만들 수 있는 여러 가지 요리들을 하나씩 따라해 보면서 좀 더 쉽고 자연스럽게 스프링의 세계에 다가서게 될 것입니다.

 

독자에게,

최근 스프링 3.0 배포와 함께 스프링 플랫폼은 가장 강력하고 성숙한 플랫폼이 되어 자바와 자바 가장 머신, 그루비, .NET, 파이썬, 액션 스크립트를 사용하는 애플리케이션 개발자들의 핵심 솔루션으로 자리잡았다.

이 책은 스프링 플랫폼을 심도 있게 알려준다. 아울러 스프링 3에 추가된 새 기능과 변경된 내용과 더불어 기타 프레임워크도 살펴보고, 완전한 개념 설명과 실무에 적용할 수 있는 고급 실습 예제까지 구체적인 코드 예제로 구성된 레시피 묶음으로 각 장을 구성했다.

스프링소스는 핵심 플랫폼에 여러 기능을 추가했다. 자바 EE 기반으로 API를 단순화하는 것뿐 아니라 각 기능은 자바 EE가 신경 쓰지 않던 전체 문제 영역을 다루고 있다. 그러한 기능으로 스프링 IoC 컨테이너의 컴포넌트 모델을 기반으로 만들어졌으며, 스프링 3 스택으로 인티그레이션, 배치 처리, OSGi, 에이잭스, 플렉스 연동, 상태 기반 웹 애플리케이션, RESTful 웹 서비스, 리치 클라이언트 사용자 인터페이스 구글 앱 엔진 배포, 클라우드 기반 배포, 메시징, 데이터 접근, 웹 서비스 같은 무척 많은 것을 제공하고 있다. 더 나아가 스프링은 BPM(business process management), 클러스터 캐시, 그리드 컴퓨팅 등 다양한 프레임워크의 보완재 역할을 하고 있다.

루비 온 레일즈 같은 고정된 아키텍처를 제공하는 프레임워크를 원하는가? 그렇다면 그루비 개발자에게 엄청난 힘과 생산성을 주는 그레일즈 같은 스프링의 대안에 깊은 인상을 받을 것이다. 애플리케이션을 빠르고 가볍게 개발하는 방법을 찾고 있는 자바 개발자라면 애플리케이션의 프로토타입 단계에서 유지보수하는 단계까지 깨끗하고 최선책에 기반을 둔 코드로 발전시킬 수 있는 스프링 루를 좋아할 것이다.

이 모든 주제를 코드를 풍부하게 담아낸 이 책에서 살펴볼 수 있다. 즐겁게 읽고 스프링 플랫폼을 잘 사용하기 바란다.

-- 게리 막, 조시 롱, 다니엘 루비오

스프링 프레임워크는 성장하고 있다. 모든 것은 늘 선택의 문제였다. 자바 EE는 여러 대안과 더 나은 해결책을 뒤로하고 일부 기술에만 집중하고 있다. 스프링 프레임워크가 등장했을 때 자바 EE는 최선이라고 여겨질 만큼의 아키텍처를 나타낸다고 보기가 어려웠다. 스프링은 자바 EE를 단순화하는 방법을 강구했기 때문에 엄청난 추종자를 확보했다. 매번 배포할 때마다 새 기능을 추가해 여러 해결책을 사용할 수 있게 했으며 그러한 기능을 간편하게 사용할 수 있게 만들어줬다.

2.0 이후부터 스프링 프레임워크는 여러 플랫폼을 다루기 시작했다. 프레임워크는 항상 그래왔듯이 기존 플랫폼 위에서 서비스 할 수 있었지만, 가능한 한 기저 플랫폼에 느슨하게 의존하게 해줬다. 자바 EE는 여전히 주요한 준거점이지만 유일한 것은 아니다. OSGi(모듈형 아키텍처에 있어 장래성이 있는 기술)는 현재 스프링소스의 큰 전략 중 하나다. 또한 스프링 프레임워크는 구글 앱 엔진에서도 사용할 수 있다. 애노테이션 중심의 프레임워크와 XML 스키마를 도입해 스프링소스는 효율적으로 특정 문제 영역의 도메인을 사실상 DSL(domain-specific language)로 모델링할 수 있게 해준다. 스프링 프레임워크 기반의 프레임워크가 생겨 인티그레이션, 배치 처리, 플렉스와 플래시 연동, GWT, OSGi 등 많은 것을 다루고 있다.

스프링 레시피 원본을 갱신할 시점이 오자, 효율적으로 핵심 스프링 프레임워크만 다룬 책이 나온 지 오래됐다는 사실을 금새 알아차렸다. 앞서 언급한 스프링소스 포트폴리오는 여러 프레임워크로, 각각이 경쟁 중인 다른 제품과 비교해 봤을 때 훨씬 더 많은 가능성을 지녔다. 이 책에서는 다양한 프레임워크를 살펴볼 것이다. 그런 기술이 필요하지 않다면 프로젝트에서 사용하지 않아도 된다. 하지만 필요하다면 무엇을 사용할 수 있는지 알아두는 것이 좋겠다. 대상 독자

이 책은 아키텍처를 단순화하고 싶고 자바 EE 플랫폼 영역 밖의 문제를 해결하고자 하는 자바 개발자를 위한 책이다. 프로젝트에서 이미 스프링을 사용해서 개발 중이라면, 미처 알지 못했던 새로운 기술을 다룬 더 심도 있는 내용을 확인할 수 있을 것이다. 프레임워크를 처음 사용하는 분이라면 바로 이 책으로 시작할 수 있을 것이다.

이 책은 독자가 자바와 IDE에 익숙하다고 가정한다. 자바를 클라이언트 애플리케이션에서 사용하는 것도 가능하지만 자바의 거대한 커뮤니티는 엔터프라이즈 영역에도 존재하며, 이 분야의 기술이 가장 많은 이익을 가져다 주기도 한다는 사실을 알게 될 것이다. 따라서 서블릿 API 같은 기본적인 엔터프라이즈 프로그래밍 개념에도 익숙할 것으로 가정하겠다. 이 책의 구성

1장, ‘스프링 소개’에서는 스프링 프레임워크에 대한 일반적인 개요를 제시한다. 스프링을 어떻게 설정하고, 스프링이 무엇이며, 어떻게 사용하는지 다룬다.

2장, ‘고급 스프링 IoC 컨테이너’에서는 1장에서 다룬 것과 비교해서 널리 사용되고 있지는 않지만 컨테이너를 십분 활용하기 위한 핵심적인 개념을 다룬다.

3장, ‘스프링 AOP와 AspectJ 지원’에서는 AspectJ를 활용한 스프링의 관점지향 프로그래밍 기능을 다룬다. 이 기술은 스프링 프레임워크가 제공하는 여러 다른 서비스의 기반이다.

4장, ‘스프링과 스크립팅’에서는 그루비, 빈쉘, 제이루비 같은 스크립트 언어를 스프링 프레임워크와 함께 사용하는 방법을 다룬다.

5장, ‘스프링 시큐리티’에서는 애플리케이션을 더 잘 보호하는 데 도움을 주는 스프링 시큐리티 프로젝트, 기존에 Acegi라고 불렀던 프로젝트를 소개한다.

6장, ‘스프링과 다른 웹 프레임워크 연동’에서는 스프링이 제공하는 핵심 웹 단 기능을 소개한다. 여기서는 스프링이 웹 단에서 제공하는 모든 기술의 기반을 다룬다.

7장, ‘스프링 웹 플로우’에서는 웹 단의 UI 플로우를 만들 수 있는 스프링 웹 플로우를 소개한다.

8장, ‘스프링 MVC’에서는 스프링 웹 MVC 프레임워크를 사용한 웹 기반 애플리케이션 개발을 다룬다.

9장, ‘스프링 REST’에서는 스프링의 RESTful 웹 서비스 기능을 소개한다.

10장, ‘스프링과 플렉스’에서는 스프링 BlazeDS를 사용해서 리치 인터넷 애플리케이션(RIA)과 스프링 빈을 연동하는 방법을 소개한다. 여기서 추가적으로, 액션스크립트로 플래시 애플리케이션을 작성할 때도 자바 스프링 개발자가 사용하는 것과 동일한 컨테이너 서비스와 컨벤션을 사용할 수 있게 해주는 스프링 액션스크립트도 소개한다.

11장, ‘그레일즈’에서는 그루비 코드로 작성하고 구성하고 최신 프레임워크를 사용해서 생산성을 높일 수 있는 그레일즈 프레임워크를 다룬다.

12장, ‘스프링 루’에서는 스프링소스의 새로운 핵심 프레임워크로서 자바 개발자에게 더 강력함 힘을 가져다 주는 스프링 루를 다룬다.

13장, ‘스프링 테스트’에서는 스프링 프레임워크를 사용한 단위 테스트를 다룬다.

14장, ‘스프링 포틀릿 MVC 프레임워크’에서는 스프링 MVC 포틀릿 프레임워크를 사용해서 애플리케이션을 개발하고 포틀릿 컨테이너의 장점을 증진시키는 방법을 다룬다.

15장, ‘데이터 접근’에서는 스프링을 사용해서 JDBC, 하이버네이트, JPA 같은 API를 활용해 데이터를 저장하는 방법을 다룬다.

16장, ‘트랜잭션 관리’에서는 스프링의 일관적인 트랜잭션 관리 기능 기반 개념을 소개한다.

17장, ‘EJB, 스프링 리모팅, 웹 서비스’에서는 스프링 웹 서비스 프로젝트를 비롯한 다양한 RPC 기술을 소개한다.

18장, ‘엔터프라이즈 환경의 스프링’에서는 JMX 지원, 스케줄링, 이메일 지원과 같은 스프링 플랫폼이 제공하는 편의성 기능을 소개한다.

19장, ‘메시징’에서는 스프링을 사용해서 메시지지향 미들웨어를 사용하고 스프링 추상화로 단순화하는 방법을 다룬다.

20장, ‘스프링 인티그레이션’에서는 스프링 인티그레이션 프레임워크를 사용해서 개별적인 서비스와 데이터를 연동하는 방법을 다룬다.

21장, ‘스프링 배치’에서는 메인프레임 영역에서 일반적으로 고려하는 솔루션을 모델링하는 방법을 제공하는 스프링 배치를 다룬다.

22장, ‘스프링과 그리드’에서는 분산된 상태와 그리드 처리를 통해 스프링을 확장하는 다양한 방법을 살펴본다.

23장, ‘Jbpm과 스프링’에서는 비즈니스 프로세스 관리 개념을 소개하고 제이보스의 유명 프레임워크인 jBPM과 스프링 프레임워크를 연동하는 방법을 살펴본다.

24장, ‘OSGi와 스프링’에서는 스프링 프레임워크가 제공하는 견고한 OSGi 지원을 살펴본다.

게리 막(Gary Mak)

게리 막은 Meta-Archit Software Technology Limited의 설립자이자 핵심 컨설턴트이며, 7년 넘게 엔터프라이즈 자바 플랫폼 기반 애플리케이션 개발과 기술 아키텍트를 담당하고 있다. Spring Recipes: A Problem-Solution Approach와 Pro SpringSource dm Server를 집필했다.

게리는 그동안 여러 자바 기반 소프트웨어 프로젝트를 진행해 왔으며 대부분 애플리케이션 프레임워크, 시스템 인프라와 소프트웨어 툴을 개발했다. 게리는 소프트웨어 프로젝트에서 복잡한 부분을 설계하고 구현하는 것을 좋아한다. 게리는 컴퓨터 사이언스 석사 학위를 가지고 있으며 객체지향 기술, 관점지향 기술, 디자인 패턴, 소프트웨어 재사용, 도메인 주도 개발에 관심을 가지고 있다.

게리는 스프링, 하이버네이트, JPA, JSF, Portlet, Ajax, OSGi 같은 기술을 사용해서 엔터프라이즈 애플리케이션을 개발하는 데 전문가다. 스프링 1.0 버전일 때인 5년 전부터 프로젝트에서 스프링 프레임워크를 사용해왔다. 게리는 엔터프라이즈 자바, 스프링, 하이버네이트, 웹 서비스, 애자일 개발 과정 강사로 활동 중이다. 강의 교재로 스프링과 하이버네이트 튜토리얼을 작성했는데, 그 중 일부를 공개했으며, 자바 커뮤니티에서 인기를 얻고 있다. 여가 시간에는 테니스를 즐기거나 테니스 경기를 관람한다.

 

조시 롱(Josh Long)

조시 롱은 스프링소스 Spring Developer Advocate의 일원으로 (아키텍트 역할을 하면서) 엔지니어로서 수십 년간의 경력을 지니고 있으며 커뮤니티에서 왕성한 기여를 하고 있다. 그는 스프링 인티그레이션 프로젝트를 비롯한 오픈소스 프로젝트의 기여자이자 커미터를 담당하고 있다. 그는 JCP의 일원이자 유명한 기술 포털인 InfoQ.com의 편집자다. 조쉬는 국내와 해외 컨퍼런스의 주요 발표자로서 비즈니스 프로세스 관리와 엔터프라이즈 애플리케이션 연동 및 아키텍처 패턴에 이르기까지 다양한 주제를 다룬다. 그는 확장성, BPM, 그리드 처리, 모바일 컴퓨팅 등 일종의 “스마트” 시스템에 관심을 가지고 있다.

스프링소스 Spring Developer Advocate에서 그의 역할은 스프링 플랫폼을 기반으로 커뮤니티를 성장시키고 풍족하게 하는 것이다.

조시는 아내 리첼(Richelle)과 햇살 좋은 남부 캘리포니아에 살고 있다. www.joshlong.com에 블로그를 운영하고 있으며 이메일(josh@joshlong.com)로 연락할 수 있다.

 

다니엘 루비오(Daniel Rubio)

다니엘 루비오는 엔터프라이즈와 웹 기술에 10년 넘게 컨설턴트 역할을 해오고 있다. 그동안 자바, 파이썬, CORBA, 닷넷 기술 기반으로 금융업과 제조업에 비용효율적인 솔루션을 제공하고 있다. 최근에는 설정 대신 규약을 우선시하는 웹 프레임워크인, 스프링, 그레일즈, 루, 장고에 관심이 있으며 엔터프라이즈 환경에서 그러한 기술의 성능과 확장성을 살펴보는 데 집중하고 있다.

또한 그는 Oracle Technology Network, DZone 그리고 자신의 블로그인 www.WebForefront.com에서 다양한 주제로 글을 쓰고 있다.

백기선

2006년부터 자바, 스프링, 하이버네이트, 메이븐, 구글 앱 엔진 등 개발 기술에 관한 블로그(whiteship.me)를 운영하고 있으며, 2009년에 구성된 개발자 커뮤니티 봄싹(springsprout.org)의 대표이자, 제 6회 JCO(자바 커뮤니티 연합회) 사무국장을 맡고 있다. 여가 시간에는 아내와 함께 영화를 보거나 피아노 치는 것을 좋아하지만, 최근에 아기가 생겨 어떻게 될지 모르겠다.

고종봉

“좋아하고 잘할 수 있는 일을 하는 것이 행복의 조건이라면, 나는 행복한 개발자다!” 학창시절부터 유난히 컴퓨터와 프로그래밍을 좋아해서 개발을 본업으로 삼게 되었으며, 꾸준한 학습과 지식의 공유를 통해 사회에 조금이나마 보탬이 되기를 소망하고 있다. 자바 개발자로서 5년에 걸쳐 웹 애플리케이션 개발 및 연구 활동에 종사했으며, 최근에는 스프링에 관심을 갖고 봄싹 스터디와 한국 스프링 사용자 그룹(KSUG)에 참여해서 활동하고 있다. 현재는 스프링을 사용해 대형 포털의 웹 서비스를 개발하는 일을 진행하고 있다.

유윤선

IT 프리랜서 번역가로 활동하고 있다. 역서로는 『어도비 AIR 인 액션』, 『액션스크립트 3.0 완벽 가이드』, 『시작하세요! 아이패드 프로그래밍』, 『쉽고 빠르게 익히는 CSS3』, 『플래시 빌더 4 & 플렉스 4 바이블』 등이 있으며, 현재 플래시, 자바, 모바일 프로그래밍 등 다양한 분야에 관심을 가지고 번역을 하고 있다. http://joshy21.com/weblog에서 개인 블로그를 운영하고 있다.

 

옮긴이 글

여러분은 지금, 어렵게만 느껴졌던 스프링 프레임워크를 맛있게 요리해줄 요리책(Recipe)을 만났습니다. 이 책은 스프링으로 할 수 있는 수많은 요리들을 메뉴별로 분류하고, 요리 과제와 요리 방법을 풍부한 예제와 사례를 들어 설명하고 있습니다. 이 책을 통해 여러분은 스프링을 이용해 만들 수 있는 여러 가지 요리들을 하나씩 따라 해 보면서 좀 더 쉽고 자연스럽게 스프링의 세계에 다가서게 될 것입니다.

저는 스프링을 접하게 된 것이 매우 행운이라고 생각합니다.

스프링은 그 이름에서 의도하는 것처럼 개발자들에게 봄날이 오길 꿈꾸며 역동적으로 발전하고 있습니다. 스프링은 역제어(Inversion of Control) 구조를 통해 개발자로 하여금 클래스를 유연하게 설계하도록 유도하며, 의존 관계의 주입(Dependency Injection)을 도와줍니다. 그리고 컨테이너를 통해 객체(Bean)의 생명주기(Life Cycle)를 관리하고 필요한 모든 관계들을 종합적으로 제공해주는 프레임워크 역할을 수행합니다. 그리고 엔터프라이즈 애플리케이션 개발에 필요한 여러 가지 기능들도 라이브러리 형태로 제공합니다. 수많은 개발자들이 엔터프라이즈 애플리케이션을 개발하기 위해 반드시 해결해야 하는 과제의 공통된 모범 답안을 제공함으로써 개발자들의 반복적이고 소모적인 노동을 줄여줍니다. 이 밖에도 여러 유용한 이점들을 제공해주며 개발 생산성을 향상시키는 데 도움을 줍니다.

개발자들의 뛰어난 파트너인 스프링을 통해 엔터프라이즈 애플리케이션 개발에 봄날이 오기를 기대해봅니다.

이 책은 스프링에 관한 상당히 많은 내용들을 담고 있습니다. 원서의 2판이 출간되면서 1판에 비해 분량도 거의 2배로 늘어났습니다. 이 책은 스프링으로 할 수 있는 거의 대부분의 내용들을 다루고 있으며, 그중에는 국내에서 잘 쓰이지 않는 기술도 있습니다. 하지만 이 책이 쓰여진 (거대 IT 시장인) 미국에서 거론되는 기술들은 나중에 국내에서도 접할 가능성이 높은 유용한 기술이므로 관심을 가지고 알아두면 충분히 도움되리라 생각합니다.

원서를 번역하면서 가장 어려웠던 점은 개발 환경과 언어적으로 태생이 다른 기술 용어와 개념을 우리말로 완벽히 일대일 대응시키기가 어려웠다는 것입니다. 발원지의 문화권에서 느끼고 이해하고 있는 문체와 기술 용어들을 국내 실정에 맞게 번역하기 위해 역자끼리 많은 고민을 했습니다. 그리고 원문이 전달하려는 내용을 최대한 살리면서 국내 독자들이 쉽게 이해할 수 있게 번역하려고 노력했습니다.

  • 01장 스프링 소개
    • 1-1. 스프링 IoC 컨테이너 초기화
      • 과제; 해결책; 과제 풀이
    • 1-2. 스프링 IoC 컨테이너에 빈 구성하기
      • 과제; 해결책; 과제 풀이
    • 1-3. 생성자를 호출해 빈 생성하기
      • 과제; 해결책; 과제 풀이
    • 1-4. 모호한 생성자 문제 해결하기
      • 과제; 해결책; 과제 풀이
    • 1-5. 빈 레퍼런스 지정하기
      • 과제; 해결책; 과제 풀이
    • 1-6. 컬렉션 엘리먼트에 데이터 타입 지정하기
      • 과제; 해결책; 과제 풀이
    • 1-7. 스프링 FactoryBean을 이용한 빈 생성
      • 과제; 해결책; 과제 풀이
    • 1-8. 팩토리 빈과 유틸리티 스키마로 컬렉션 정의하기
      • 과제; 해결책; 과제 풀이
    • 1-9. 의존성 검사 기능으로 프로퍼티 검사하기
      • 과제; 해결책; 과제 풀이
    • 1-10. @Required 애노테이션으로 프로퍼티 검사하기
      • 과제; 해결책; 과제 풀이
    • 1-11. XML 설정을 이용한 빈 자동 연결
      • 과제; 해결책; 과제 풀이
    • 1-12. @Autowired와 @Resource로 빈 자동 연결하기
      • 과제; 해결책; 과제 풀이
    • 1-13. 빈 설정 상속하기
      • 과제; 해결책; 과제 풀이
    • 1-14. 클래스패스 컴포넌트 스캔하기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 02장 고급 스프링 IoC 컨테이너
    • 2-1. 스태틱 팩토리 메서드 호출을 통한 빈 생성
      • 과제; 해결책; 과제 풀이
    • 2-2. 인스턴스 팩토리 메서드 호출을 통한 빈 생성
      • 과제; 해결책; 과제 풀이
    • 2-3. 스태틱 필드를 통한 빈 선언
      • 과제; 해결책; 과제 풀이
    • 2-4. 객체 프로퍼티를 통한 빈 선언
      • 과제; 해결책; 과제 풀이
    • 2-5. 스프링 표현 언어(SpEL) 사용하기
      • 과제; 해결책; 과제 풀이
    • 2-6. 빈 범위 설정
      • 과제; 해결책; 과제 풀이
    • 2-7. 빈 초기화 및 소멸 과정 재정의
      • 과제; 해결책; 과제 풀이
    • 2-8. Java Config를 통한 XML 설정 단축
      • 과제; 해결책; 과제 풀이
    • 2-9. 빈에 컨테이너 정보 알려주기
      • 과제; 해결책; 과제 풀이
    • 2-10. 외부 자원 읽어들이기
      • 과제; 해결책; 과제 풀이
    • 2-11. 빈 후처리기 작성
      • 과제; 해결책; 과제 풀이
    • 2-12. 빈 설정의 외부화
      • 과제; 해결책; 과제 풀이
    • 2-13. 텍스트 메시지 해석
      • 과제; 해결책; 과제 풀이
    • 2-14. 애플리케이션 이벤트와의 상호작용
      • 과제; 해결책; 과제 풀이
    • 2-15. 스프링에 프로퍼티 에디터 등록
      • 과제; 해결책; 과제 풀이
    • 2-16. 커스텀 프로퍼티 에디터 만들기
      • 과제; 해결책; 과제 풀이
    • 2-17. TaskExecutors를 사용한 동시성 처리
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 03장 스프링 AOP와 AspectJ 지원
    • 3-1. 스프링 AspectJ 애노테이션 지원 기능 사용
      • 과제; 해결책; 과제 풀이
    • 3-2. AspectJ 애노테이션을 통한 애스펙트 선언
      • 과제; 해결책; 과제 풀이
    • 3-3. 조인 포인트의 상세 정보 참조
      • 과제; 해결책; 과제 풀이
    • 3-4. 애스펙트 우선순위 지정
      • 과제; 해결책; 과제 풀이
    • 3-5. 포인트컷 정의 재사용
      • 과제; 해결책; 과제 풀이
    • 3-6. AspectJ 포인트컷 표현식 작성
      • 과제; 해결책; 과제 풀이
    • 3-7. 인트로덕션을 활용해 빈에 행위 추가하기
      • 과제; 해결책; 과제 풀이
    • 3-8. 인트로덕션을 활용해 빈에 상태 추가하기
      • 과제; 해결책; 과제 풀이
    • 3-9. XML 기반 설정을 활용한 애스펙트 선언
      • 과제; 해결책; 과제 풀이
    • 3-10. AspectJ 애스펙트의 로드 시점 위빙
      • 과제; 해결책; 과제 풀이
    • 3-11. 스프링에서의 AspectJ 애스펙트 설정
      • 과제; 해결책; 과제 풀이
    • 3-12. 도메인 객체에 스프링 빈 주입하기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 04장 스프링 스크립팅
    • 4-1. 스크립트 언어를 사용한 빈 구현
      • 과제; 해결책; 과제 풀이
    • 4-2. 스크립트에 대한 스프링 빈 주입
      • 과제; 해결책; 과제 풀이
    • 4-3. 스크립트 빈 리프레시
      • 과제; 해결책; 과제 풀이
    • 4-4. 인라인 스크립트 소스 정의
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 05장 스프링 시큐리티
    • 5-1. URL 접근 보호
      • 과제; 해결책; 과제 풀이
    • 5-2. 웹 애플리케이션 로그인
      • 과제; 해결책; 과제 풀이
    • 5-3. 사용자 인증
      • 과제; 해결책; 과제 풀이
    • 5-4. 접근 제어 결정
      • 과제; 해결책; 과제 풀이
    • 5-5. 메서드 호출 보호
      • 과제; 해결책; 과제 풀이
    • 5-6. 뷰에서의 보안 처리
      • 과제; 해결책; 과제 풀이
    • 5-7. 도메인 객체 보안 처리
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 06장 스프링과 다른 웹 프레임워크의 연동
    • 6-1. 일반 웹 애플리케이션에서의 스프링 접근
      • 과제; 해결책; 과제 풀이
    • 6-2. 서블릿과 필터에서의 스프링 사용
      • 과제; 해결책; 과제 풀이
    • 6-3. 스프링과 스트러츠 1.x 연동
      • 과제; 해결책; 과제 풀이
    • 6-4. 스프링과 JSF 연동
      • 과제; 해결책; 과제 풀이
    • 6-5. 스프링과 DWR의 연동
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 07장 스프링 웹 플로우
    • 7-1. 스프링 웹 플로우를 통한 스프링 UI 플로우 관리
      • 과제; 해결책; 과제 풀이
    • 7-2. 다양한 스테이트 타입을 사용한 웹 플로우 모델링
      • 과제; 해결책; 과제 풀이
    • 7-3. 웹 플로우 보호
      • 과제; 해결책; 과제 풀이
    • 7-4. 웹 플로우에서의 객체 영속성
      • 과제; 해결책; 과제 풀이
    • 7-5. 스프링 웹 플로우와 JSF의 연동
      • 과제; 해결책; 과제 풀이
    • 7-6. 스프링 웹 플로우와 리치페이스 연계
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 08장 스프링 MVC
    • 8-1. 스프링 MVC를 사용한 간단한 웹 애플리케이션 개발
      • 과제; 해결책; 과제 풀이
    • 8-2. @RequestMapping을 통한 요청 매핑
      • 과제; 해결책; 과제 풀이
    • 8-3. 핸들러 인터셉터를 사용한 요청 가로채기
      • 과제; 해결책; 과제 풀이
    • 8-4. 사용자 로캘 리졸브
      • 과제; 해결책; 과제 풀이
    • 8-5. 로캘에 민감한 텍스트 메시지의 외부화
      • 과제; 해결책; 과제 풀이
    • 8-6. 이름을 통한 뷰 리졸브
      • 과제; 해결책; 과제 풀이
    • 8-7. 뷰와 콘텐츠에 대한 판단
      • 과제; 해결책; 과제 풀이
    • 8-8. 예외의 뷰 매핑
      • 과제; 해결책; 과제 풀이
    • 8-9. @Value를 이용한 컨트롤러에서의 값 대입
      • 과제; 해결책; 과제 풀이
    • 8-10. 컨트롤러를 이용한 폼 처리
      • 과제; 해결책; 과제 풀이
    • 8-11. 마법사 폼 컨트롤러를 이용한 멀티페이지 폼 처리
      • 과제; 해결책; 과제 풀이
    • 8-12. 애노테이션(JSR-303)을 사용한 빈 밸리데이션
      • 과제; 해결책; 과제 풀이
    • 8-13. 엑셀과 PDF 뷰 생성
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 09장 스프링 REST
    • 9-1. 스프링을 사용한 REST 서비스 발행
      • 과제; 해결책; 과제 풀이
    • 9-2. 스프링을 이용한 REST 서비스 접근
      • 과제; 해결책; 과제 풀이
    • 9-3. RSS와 Atom 피드 발행
      • 과제; 해결책; 과제 풀이
    • 9-4. REST 서비스를 통한 JSON 발행
      • 과제; 해결책; 과제 풀이
    • 9-5. 정교한 XML 응답을 갖는 REST 서비스에 접근하기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 10장 스프링과 플렉스
    • 10-1. 플렉스 시작하기
      • 과제; 해결책; 과제 풀이
    • 10-2. 샌드박스를 벗어난 외부 연동
      • 과제; 해결책; 과제 풀이
    • 10-3. 애플리케이션에 대한 스프링 BlazeDS 지원 기능 추가
      • 문제; 해결책; 과제 풀이
    • 10-4. BlazeDS/스프링을 통한 서비스 노출
      • 과제; 해결책; 과제 풀이
    • 10-5. 서버 사이드 객체와의 연동
      • 과제; 해결책; 과제 풀이
    • 10-6. BlazeDS 및 스프링을 활용한 메시지 관련 서비스 처리
      • 과제; 해결책; 과제 풀이
    • 10-7. 액션스크립트 클라이언트에서 의존성 주입
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 11장 그레일즈
    • 11-1. 그레일즈 다운로드 및 설치
      • 과제; 해결책; 과제 풀이
    • 11-2. 그레일즈 애플리케이션의 생성
      • 과제; 해결책; 과제 풀이
    • 11-3. 그레일즈 플러그인
      • 과제; 해결책; 과제 풀이
    • 11-4. 그레일즈 환경에서의 개발, 배포, 테스트
      • 과제; 해결책; 과제 풀이
    • 11-5. 애플리케이션의 도메인 클래스 정의
      • 과제; 해결책; 과제 풀이
    • 11-6. 애플리케이션의 도메인 클래스와 관련한 CRUD 컨트롤러 및 뷰 작성
      • 과제; 해결책; 과제 풀이
    • 11-7. 국제화(i18n) 메시지 프로퍼티
      • 과제; 해결책; 과제 풀이
    • 11-8. 영구 저장 시스템 변경
      • 과제; 해결책; 과제 풀이
    • 11-9. 로깅
      • 과제; 해결책; 과제 풀이
    • 11-10. 단위 테스트와 통합 테스트 실행
      • 과제; 해결책; 과제 풀이
    • 11-11. 커스텀 레이아웃과 템플릿 사용
      • 과제; 해결책; 과제 풀이
    • 11-12. GORM 쿼리의 사용
      • 과제; 해결책; 과제 풀이
    • 11-13. 커스텀 태그 생성
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 12장 스프링 루
    • 12-1. 스프링 루 개발 환경 설정
      • 과제; 해결책; 과제 풀이
    • 12-2. 첫 번째 스프링 루 프로젝트 생성
      • 과제; 해결책; 과제 풀이
    • 12-3. 기존 프로젝트를 스프링소스 툴 스위트로 불러오기
      • 과제; 해결책; 과제 풀이
    • 12-4. 더 좋은 애플리케이션의 신속한 개발
      • 과제; 해결책; 과제 풀이
    • 12-5. 프로젝트에서 스프링 루 제거
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 13장 스프링 테스트
    • 13-1. JUnit과 TestNG를 활용한 테스트 작성
      • 과제; 해결책; 과제 풀이
    • 13-2. 단위 테스트와 통합 테스트 작성
      • 과제; 해결책; 과제 풀이
    • 13-3. 스프링 MVC 컨트롤러의 단위 테스트
      • 과제; 해결책; 과제 풀이
    • 13-4. 통합 테스트에서의 애플리케이션 컨텍스트 관리
      • 과제; 해결책; 과제 풀이
    • 13-5. 통합 테스트에 테스트 픽스처 주입
      • 과제; 해결책; 과제 풀이
    • 13-6. 통합 테스트에서의 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 13-7. 통합 테스트에서의 데이터베이스 접근
      • 과제; 해결책; 과제 풀이
    • 13-8. 스프링의 일반 테스트 애노테이션 활용
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 14장 스프링 포틀릿 MVC 프레임워크
    • 14-1. 스프링 포틀릿 MVC를 사용한 간단한 포틀릿 개발
      • 과제; 해결책; 과제 풀이
    • 14-2. 포틀릿 요청의 핸들러 매핑
      • 과제; 해결책; 과제 풀이
    • 14-3. 간단한 폼 컨트롤러를 사용한 포틀릿 폼 처리
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 15장 데이터 접근
    • JDBC를 직접 사용할 때의 문제점
      • 애플리케이션 데이터베이스 구성;
      • 데이터 접근 객체(DAO) 디자인 패턴의 이해;
      • JDBC를 활용한 DAO 구현;스프링에서의 데이터 소스 설정;
      • 과제 풀이;
      • DAO 실행;
      • ORM 같은 다른 대안 소개
    • 15-1. JDBC 템플릿을 이용한 데이터베이스 업데이트
      • 과제; 해결책; 과제 풀이
    • 15-2. JDBC 템플릿을 활용한 데이터베이스 조회
      • 과제; 해결책; 과제 풀이
    • 15-3. JDBC 템플릿 생성 간소화
      • 과제; 해결책; 과제 풀이
    • 15-4. 자바 1.5 버전에서 SimpleJdbcTemplate 활용
      • 과제; 해결책; 과제 풀이
    • 15-5. JDBC 템플릿에서 네임드 매개변수 사용
      • 과제; 해결책; 과제 풀이
    • 15-6. 스프링 JDBC 프레임워크에서 예외 처리
      • 과제; 해결책; 과제 풀이
    • 15-7. ORM 프레임워크를 직접 사용할 때의 문제점
      • 과제; 해결책; 과제 풀이;
      • 하이버네이트 XML 매핑과 하이버네이트 API를 활용한 객체 영속화;
      • JPA 애노테이션과 하이버네이트 API를 활용한 객체 영속화;
      • 하이버네이트를 엔진으로 사용한 JPA로 객체 영속화하기
    • 15-8. 스프링에서 ORM 리소스 팩터리 설정하기
      • 과제; 해결책; 과제 풀이
    • 15-9. 스프링 ORM 템플릿을 활용한 객체 영속화
      • 과제; 해결책; 과제 풀이
    • 15-10. 하이버네이트의 컨텍스트 세션으로 객체 영속화하기
      • 과제; 해결책; 과제 풀이
    • 15-11. JPA 컨텍스트 주입을 통한 객체 영속화
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 16장 트랜잭션 관리
    • 16-1. 트랜잭션 관리와 관련된 문제
    • 16-2. 트랜잭션 관리자 구현체 선택
      • 과제; 해결책; 과제 풀이
    • 16-3. 트랜잭션 매니저 API를 통한 프로그램 방식의 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 16-4. 트랜잭션 템플릿을 통한 프로그램 방식의 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 16-5. 트랜잭션 어드바이스를 통한 선언적인 방식의 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 16-6. @Transactional 애노테이션을 통한 선언적인 방식의 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 16-7. 트랜잭션 전달 속성 설정
      • 과제;해결책;과제풀이
    • 16-8. 트랜잭션 격리 속성 설정
      • 과제; 해결책; 과제 풀이
    • 16-9. 롤백 트랜잭션 속성 설정
      • 과제; 해결책; 과제 풀이
    • 16-10. 트랜잭션 타임아웃 및 읽기전용 속성 설정
      • 과제; 해결책; 과제 풀이
    • 16-11. 로드 시점 위빙을 활용한 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 17장 EJB, 스프링 리모팅, 웹 서비스
    • 17-1. RMI를 통한 서비스 노출 및 호출
      • 과제; 해결책; 과제 풀이
    • 17-2. 스프링 EJB 2.x 컴포넌트 작성
      • 과제; 해결책; 과제 풀이
    • 17-3. 스프링에서 기존 EJB 2.x 컴포넌트에 접근하기
      • 과제; 해결책; 과제 풀이
    • 17-4. 스프링에서 EJB 3.0 컴포넌트 작성하기
      • 과제; 해결책; 과제 풀이
    • 17-5. 스프링에서 EJB 3.0 컴포넌트에 접근하기
      • 과제; 해결책; 과제 풀이
    • 17-6. HTTP를 통한 서비스 노출과 호출
      • 과제; 해결책; 과제 풀이
    • 17-7. SOAP 웹 서비스 개발 방식 선택
      • 과제; 해결책; 과제 풀이
    • 17-8. JAX-WS를 활용한 후 계약 SOAP 웹 서비스 노출과 호출
      • 과제; 해결책; 과제 풀이
    • 17-9. 웹 서비스 계약 정의
      • 과제; 해결책; 과제 풀이
    • 17-10. Spring-WS를 이용한 웹 서비스 구현
      • 과제; 해결책; 과제 풀이
    • 17-11. Spring-WS를 이용한 웹 서비스 호출
      • 과제; 해결책; 과제 풀이
    • 17-12. XML 마샬링을 활용한 웹 서비스 개발
      • 과제; 해결책; 과제 풀이
    • 17-13. 애노테이션을 활용한 서비스 엔드포인트 생성
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 18장 엔터프라이즈 환경의 스프링
    • 18-1. 스프링 빈을 JMX MBean으로 익스포트하기
      • 과제; 해결책; 과제 풀이
    • 18-2. JMX 통지 발행과 리스닝
      • 과제; 해결책; 과제 풀이
    • 18-3. 스프링에서 원격 JMX MBean에 접근하기
      • 과제; 해결책; 과제 풀이
    • 18-4. 스프링 E-mail 지원 기능을 활용한 E-mail 발송
      • 과제;해결책
    • 18-5. 스프링 Quartz 지원 기능을 이용한 스케줄링
      • 과제; 해결책; 과제 풀이
    • 18-6. 스프링 3.0의 스케줄링 네임스페이스를 이용한 스케줄링
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 19장 메시징
    • 19-1. 스프링으로 JMS 메시지 주고받기
      • 과제; 해결책; 과제 풀이
    • 19-2. JMS 메시지 변환
      • 과제; 해결책; 과제 풀이
    • 19-3. JMS 트랜잭션 관리
      • 과제; 해결책; 과제 풀이
    • 19-4. 스프링에서 메시지 기반 POJO 작성하기
      • 과제; 해결책; 과제 풀이
    • 19-5. 연결 생성
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 20장 스프링 인티그레이션
    • 20-1. 한 시스템과 다른 시스템 간의 EAI 연동
      • 과제; 해결책; 과제 풀이
    • 20-2. JMS를 이용한 두 시스템 간의 연동
      • 과제; 해결책; 과제 풀이
    • 20-3. 스프링 인티그레이션 메시지에서 컨텍스트 정보 조회하기
      • 과제; 해결책; 과제 풀이
    • 20-4. 파일 시스템을 이용한 시스템 연동
      • 과제; 해결책; 과제 풀이
    • 20-5. 메시지 타입 변환
      • 과제; 해결책; 과제 풀이
    • 20-6. 스프링 인티그레이션을 이용한 에러 처리
      • 과제; 해결책; 과제 풀이
    • 20-7. Splitters와 Aggregators를 이용한 연동 분기 제어
      • 과제; 해결책; 과제 풀이
    • 20-8. Router를 이용한 조건적 라우팅
      • 과제; 해결책; 과제 풀이
    • 20-9. 외부 시스템과 버스 간의 어댑터
      • 과제; 해결책; 과제 풀이
    • 20-10. 스프링 배치를 이용한 이벤트 스테이징
      • 과제; 해결책; 과제 풀이
    • 20-11. 게이트웨이 사용하기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 21장 스프링 배치
    • 런타임 메타데이터 모델;
    • 21-1. 스프링 배치 인프라 준비
      • 과제; 해결책; 과제 풀이
    • 21-2. 읽기 쓰기 (연산 없이)
      • 과제; 해결책; 과제 풀이
    • 21-3. 커스텀 ItemWriter와 ItemReader 작성하기
      • 과제; 해결책; 과제 풀이
    • 21-4. 출력 전에 입력 데이터 처리하기
      • 과제; 해결책; 과제 풀이
    • 21-5. 트랜잭션을 통한 더 나은 삶
      • 과제; 해결책; 과제 풀이
    • 21-6. 재시도
      • 과제; 해결책; 과제 풀이
    • 21-7. 단계 실행 제어하기
      • 과제; 해결책; 과제 풀이
    • 21-8. 작업 실행하기
      • 과제; 해결책; 과제 풀이
    • 21-9. 작업 매개변수화하기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 22장 스프링과 그리드
    • 22-1. 테라코타를 이용한 객체 상태 클러스터링
      • 과제; 해결책; 과제 풀이
    • 22-2. 그리드에서 실행하기
      • 과제; 해결책; 과제 풀이
    • 22-3. 메서드 로드 밸런싱하기
      • 과제; 해결책; 과제 풀이;
    • 22-4. 병렬처리; - 과제; 해결책; 과제 풀이
    • 22-5. 그리드게인 배포하기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 23장 jBPM과 스프링
    • 소프트웨어 프로세스;23-1. 워크플로우 모델 이해하기
      • 과제; 해결책; 과제 풀이
    • 23-2. jBPM 설치
      • 과제; 해결책; 과제 풀이
    • 23-3. jBPM 4와 스프링 연동하기
      • 과제; 해결책; 과제 풀이
    • 23-4. 스프링으로 서비스 만들기
      • 과제; 해결책; 과제 풀이
    • 23-5. 비즈니스 프로세스 만들기
      • 과제; 해결책; 과제 풀이
    • 정리
    •  
  • 24장 OSGi와 스프링
    • 24-1. OSGi 시작하기
      • 과제; 해결책; 과제 풀이
    • 24-2. 스프링 다이내믹 모듈 사용하기
      • 과제; 해결책; 과제 풀이
    • 24-3. 스프링 다이내믹 모듈로 서비스 익스포트하기
      • 과제; 해결책; 과제 풀이
    • 24-4. OSGi 레지스트리에서 특정 서비스 찾아내기
      • 과제; 해결책; 과제 풀이
    • 24-5. 다중 인터페이스를 구현한 서비스 발행하기
      • 과제; 해결책; 과제 풀이
    • 24-6. 스프링 다이내믹 모듈 커스터마이징하기
      • 과제; 해결책; 과제 풀이
    • 24-7. 스프링소스 dm 서버 사용하기
      • 과제; 해결책; 과제 풀이
    • 24-8. 스프링소스의 도구 지원
      • 과제; 해결책; 과제 풀이
    • 정리

예제코드 관련 GitHub 페이지

도서 소개자료

관련 글