[웹 프로그래머를 위한]
스프링 MVC 프로그래밍
- 원서명Pro Spring MVC: With Web Flow (ISBN 9781430241553)
- 지은이마틴 데니엄, 코엔 세르닐즈, 콜린 예이츠, 세스 래드, 크리스토프 밴플레테렌
- 옮긴이김인희
- ISBN : 9788960774773
- 42,000원
- 2013년 09월 30일 펴냄 (절판)
- 페이퍼백 | 752쪽 | 188*250mm
- 시리즈 : 오픈소스 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
이 책은 현재 가장 인기 있는 웹 프레임워크 중의 하나인 스프링 MVC에 대해 소개한다. 스프링의 기본 개념과 일반적인 웹 애플리케이션 아키텍처인 MVC를 시작으로 스프링 MVC 프레임워크의 기본 원리 및 주요 컴포넌트들에 대해 상세하게 설명한다. 또한 스프링 웹 플로우, 스프링 MVC 테스트, REST와 AJAX, 스프링 보안 등 웹 애플리케이션 개발에 부가적으로 필요한 내용도 자세하게 알려준다. 스프링 MVC를 처음 시작하거나 스프링 MVC에 대해 전반적이고 깊이 있는 지식을 얻고자 할 때 이 책은 완벽한 가이드가 될 것이다.
[ 예제파일 다운로드 ]
https://github.com/mdeinum/pro-spring-mvc-code/archive/master.zip
[ 예제파일 다운로드 가능한 깃허브 사이트 ]
https://github.com/mdeinum/pro-spring-mvc-code/
[ 이 책에서 다루는 내용 ]
■ 스프링 MVC 아키텍처
■ DispatcherServlet을 사용한 개발
■ 개발 환경 설정
■ 로컬 웹 서버 및 원격 클라우드 기반 배포 플랫폼 활용
■ 컨트롤러 작성
■ 스프링 MVC에 REST, AJAX 접목
■ 뷰 결정과 구현
■ 스프링 MVC 애플리케이션 테스트
■ 스프링 보안 구현
■ 스프링 웹 플로우로 애플리케이션 작성
[ 이 책의 대상 독자 ]
이 책은 스프링에 익숙하며 스프링 MVC를 좀 더 자세히 이해하고 싶은 사람들을 대상으로 한다. 스프링 MVC가 처음인 사람들을 기준으로 책의 내용이 주로 맞춰져 있지만, MVC 전문가들도 유용한 정보를 얻을 수 있게 했다.
독자 대부분은 스프링 프레임워크의 핵심 부분을 조금이라도 이해한 상태에서(예를 들어 『Pro Spring』을 한 권 읽고 난 후에) 스프링 MVC를 자세히 알아보고자 이 책을 선택한 웹 개발자일 것이다.
스프링에 대해 잘 모르더라도 묵묵히 이 책(특히 2장)을 읽어나가자. 그러다가 뭔가 좀 부족하다고 생각되면 스프링 레퍼런스 가이드나 『Pro Spring 3』(Apress, 2012)을 참고하면 된다.
로드 존슨의 저서이자 스프링 책의 원조인 『Expert One-on-One J2EE Design and Development』(Wrox, 2002)는 발간된 지 꽤 됐지만, 여전히 주옥 같은 내용으로 가득 차 있다.
[ 이 책의 구성 ]
1장, 스프링 개발 환경 구성에서는 샘플 애플리케이션 개발 환경에 꼭 필요한 것이 무엇인지 알려준다. 또한 샘플 애플리케이션(온라인 서점)의 구조와 목표에 대해서도 다룬다.
2장, 스프링 프레임워크의 기본에서는 스프링 프레임워크의 기본 빌딩 블록을 간략하게 설명한다. 또한 의존 관계 주입(DI, Dependency Injection)과 제어의 역전(IoC, Inversion of Control)에 대해서도 다룬다. 스프링을 잘 모른다면 2장을 적극 추천한다.
3장, 웹 애플리케이션 아키텍처에서는 웹 애플리케이션 아키텍처를 약간 에둘러 설명한다. 웹 애플리케이션을 구성하는 (일반적인) 여러 레이어에 대해 알아보고, 모델(Model), 뷰(View), 컨트롤러(Controller)가 조화를 이루는 화음도 들어본다.
4장, 스프링 MVC 아키텍처에서는 스프링 MVC를 본격적으로 다루기 시작한다. MVC가 무엇이고 웹 애플리케이션은 일반적으로 어떻게 구성되는지 설명한다. 또한 스프링 MVC 엔진의 동력원이라 할 수 있는 DispatcherServlet에 대해서도 알아본다.
5장, 컨트롤러 구현에서는 실제 예제 코드를 보여주며 설명한다. 5장은 이전 장들에서 배운 개념을 토대로 컨트롤러를 작성하며, 스프링 @MVC의 내부를 심도 있게 다룬다. 5장의 마지막 부분부터는 샘플 애플리케이션을 만들기 시작한다.
6장, 컨트롤러 구현: 고급 모든 애플리케이션은 핵심 기능은 아니지만 특정 부분에만 들어맞는 기능이 필요한 경우가 있고, 각기 다른 부분에서 동일한 기능이 필요한 경우도 있다. 6장에서는 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)을 소개하고 스프링 MVC가 공통 웹 문제들을 어떻게 쉽게 해결하는지 살펴본다. 또한 스프링 MVC 내부에 대해 더 자세히 알아보고 요구 사항에 맞춰 기존 인프라를 확장하는 방법도 설명한다.
7장, REST와 AJAX에서는 온라인 서점 애플리케이션을 돋보이게 해줄 기능을 소개한다. 또한 컨트롤러를 REST 웹 서비스로 노출해서 다른 쪽에서 이를 통합하는 방법도 알아본다. 이를 위해 REST와 AJAX에 대해 설명하고, 이 기술들을 애플리케이션에 적용해본다.
8장, 뷰 결정과 구현에서는 스프링 MVC가 뷰를 결정하는 방법을 자세히 알아보고 지금까지 배운 내용을 바탕으로 뷰를 구현해본다. ViewResolver 인프라를 다시 살펴보고, 같은 인프라를 재사용해서 동일 모델을 다르게 활용할 수 있게 해주는 스프링 MVC의 강력한 힘을 보여준다.
9장, 스프링 MVC 애플리케이션 테스트 이제 스프링 MVC를 사용해 원하는 것을 코드로 구현할 수 있게 되었으니 테스트를 해볼 차례다. 9장에서는 스프링 MVC 애플리케이션을 어떻게 테스트하고, 특히 무엇을 테스트할지 알아본다. 여러 가지 테스트 전략을 살펴보고 테스트가 필요한 경우만을 골라 테스트하는 방법도 다룬다. 또한 HTML을 어떻게 테스트할지도 배운다.
10장, 스프링 웹 플로우 지금까지 모든 페이지 인터랙션은 단순했고 각 유스케이스는 한두 페이지밖에 필요하지 않았다. 매니저가 다른 유스케이스를 넣기 원하면 어떻게 해야 할까? 이 장에서는 스프링 MVC의 파트너인 스프링 웹 플로우를 소개한다. 스프링 웹 플로우는 클라이언트와의 웹을 통한 대화를 관리하는 훌륭한 기능을 제공한다.
11장, 스프링 웹 플로우 애플리케이션 작성에서는 10장에서 소개한 스프링 웹 플로우와 스프링 웹 플로우가 해결한 문제들을 바탕으로 실제 스프링 웹 플로우 애플리케이션을 작성하는 방법을 배운다.
12장, 고급 스프링 웹 플로우에서는 11장에서 배운 내용을 바탕으로 스프링 웹 플로우를 더 자세히 살펴보고 그 진정한 가치를 파헤쳐본다.
13장, 스프링 보안에서는 스프링에서 확고한 위치를 차지하고 있는 스프링 보안을 사용해 웹 애플리케이션을 해커로부터 보호하는 방법을 알아본다.
부록 A, 클라우드 파운드리: 클라우드에 배포에서는 클라우드(특히 클라우드 파운드리)에 애플리케이션을 배포하는 절차를 설명한다. 클라우드를 사용하면 우리가 선택한 개발 환경과 끊김 없는 통합이 가능하다.
[ 추천의 글 ]
스프링 MVC는 스프링이 제공하는 기술 중에서 가장 늦게 주목 받았습니다. 스프링이 처음 소개됐을 때는 이미 스트럿츠를 비롯한 다양한 자바 웹 기술이 폭넓게 사용되고 있었기 때문에 스프링을 도입하더라도 웹 MVC는 스프링 MVC 대신 다른 익숙한 웹 기술을 사용하는 경우가 대부분이었습니다. 하지만 당시에 인기를 끌던 자바 웹 기술은 지난 10여 년 동안 대부분 개발이 중단되거나 인기를 잃었습니다. 그 사이 웹 개발 기술에 많은 변화가 있었지만 과거의 기술들은 이런 흐름을 대부분 따라가지 못했기 때문입니다. 반면 스프링 MVC는 꾸준히 그 가치를 인정받고 인기를 얻어 지금은 가장 많은 개발자들이 사용하는 자바 웹 기술이 되었습니다. 스프링 MVC는 스프링의 개발철학을 따라 만들어진 기술이기 때문에 웹 기술의 발전에 유연하고 빠르게 대응해 올 수 있었기 때문입니다.
스프링 MVC는 스프링의 정수가 담긴 기술 집약체입니다. 처음에는 간단한 관례와 사용법을 익혀 빠르게 시작할 수 있지만, 스프링 MVC가 제공하는 기술을 본격적으로 활용하고 이득을 얻으려면 내부 아키텍처에 대한 이해와 확장 방법 등을 잘 이해할 필요가 있습니다. 『스프링 MVC 프로그래밍』은 스프링 MVC를 본격적으로 활용하는 데 필요한 모든 영역의 내용을 충실히 담은, 스프링 MVC에 관한 독보적인 책입니다. 스프링 MVC를 웹 개발에 이용하는 개발자라면 반드시 읽고 개발에 참고하시길 추천합니다.
-이일민 / 이프릴 대표, 『토비의 스프링 3』 & 『토비의 스프링 3.1』 저자
내 기억으로 2004년도에 스프링 프레임워크를 처음 배우기 시작한 것 같다. 그 당시 J2EE와 스트럿츠를 주로 사용했고, 이 기술들 때문에 자바 엔터프라이즈 애플리케이션을 개발할 때 무척이나 애를 먹었다. 스프링은 J2EE를 완전히 배제하지 않고 수많은 모범 사례들을 한데 모으고, 제어의 역전 개념을 소개해 J2EE를 최대한 단순하고 효과적으로 사용하는 방법을 제시했다. 스프링의 이러한 점은 나를 단번에 매료시켰다.
스프링은 J2EE의 기존 부분이나 (특히 하이버네이트 같은) 저명한 프레임워크들과 경쟁이 될 만한 솔루션을 만드는 데 쓸데없이 시간을 낭비하지 않았다. 하지만 웹 애플리케이션 개발만큼은 달랐다. 스프링은 스트럿츠 같은 프레임워크를 대체하는 스프링 MVC라는 완전히 실용적인 웹 프레임워크를 만들었다. 그 당시 나는 스프링 웹 플로우(Spring Web Flow)라는 스프링 MVC의 페이지 플로우 컴포넌트에 주목하고 이 컴포넌트를 사용하면 스프링 기반 웹 애플리케이션 개발이 한층 더 강화될 것이라는 믿음을 가졌다. 스프링 MVC와 스프링 웹 플로우는 이 책에서 다루는 주요 주제이기도 하다.
스프링 MVC 설계는 앞서 발표된 프레임워크들에서 얻은 교훈들을 바탕으로 한다. 유연함과 장기간의 생산성 향상은 스프링의 핵심 설계 원칙이다. 스프링 MVC로 애플리케이션을 잘 설계하면 규모가 커지고 요구 사항이 변경돼도 여전히 유지 보수와 관리가 용이하다. 하지만 반드시 좋은 점만 있는 것은 아니다. 스프링에는 초기 학습 곡선이 있으며, 특히 스프링 MVC의 경우에는 학습 곡선이 더 가파르다. 루비 온 레일즈 같은 새로운 프레임워크가 각광받는 이유도 단기간의 생산성에 뛰어나고, 학습 비용이 낮은 데 있다. 스프링 개발자 커뮤니티는 이러한 단점에 주목하고 스프링 MVC 3.0과 3.1을 발표해 이를 많이 개선했다. 앞으로 곧 배우겠지만, 설정보다는 관례(CoC, convention-over-configuration)나 애노테이션 등을 통해 전보다는 스프링 MVC가 더 쉬워졌다. 이러한 모든 개념을 수용해도 이전 버전과 100% 완벽하게 호환되는 점을 보면 스프링 MVC가 얼마나 유연하고 설계 수준이 높은지 알 수 있다. 스프링 MVC의 탄탄한 기본 원리는 장기적으로 봤을 때 큰 득이 되며, 스프링 MVC는 배우기도 쉬워 일거양득의 장점이 있다. 현재 스프링 웹 플로우는 스프링과 비슷한 발전 양상을 보이고 있다.
2004년 이후로 스프링 MVC와 스프링 웹 플로우는 꾸준한 인기를 얻고 있다. 이 두 프레임워크는 이제 더욱 성숙하고 안정된 자바 개발 프레임워크로 성장했다. 이들 프레임워크를 사용해 웹 애플리케이션을 만드는 것은 탄탄한 기초 위에 건물을 짓는 것과 같다.
이 책의 저자인 마틴과 코엔은 스프링 MVC와 스프링 웹 플로우를 실용적으로 접근해서 소개한다. 우선 저자들은 여러분이 생산적인 개발 환경을 구축하고 스프링 MVC와 웹 플로우로 개발을 시작할 수 있게 도와준다. 이게 다가 아니다. 저자들은 기술들을 세부적으로 다루는 데 그치지 않고 독자 여러분이 이 기술들을 좀 더 잘 이해할 수 있게 그 기저에 놓인 상당수의 개념을 설명하는 데 공을 들였다. 또한 이 책은 보안 강화와 웹 애플리케이션 테스트 같은 여러 중요 주제도 다룬다. 이 책을 읽고 나면 스프링 기술을 사용해 실제 웹 애플리케이션을 개발하는 데 어려움이 없을 것이다.
지금까지도 여러 사람들이 스프링이나 내가 2004년도에 스프링에 추가한 작은 컴포넌트를 통해 많은 도움을 받고 있는 것을 보니 흐뭇한 생각이 든다. 스프링 MVC와 스프링 웹 플로우를 배우고자 하는 분들에게 이 책을 적극 추천한다. 개발자들이 이 흥미진진한 스프링 기술을 배울 수 있도록 기여한 저자들의 노고에 박수를 보내고 싶다.
- 어윈 버뱃(Erwin Vervaet) / 스프링 웹 플로우 프로젝트 설립자
[ 예제파일 다운로드 ]
https://github.com/mdeinum/pro-spring-mvc-code/archive/master.zip
[ 예제파일 다운로드 가능한 깃허브 사이트 ]
https://github.com/mdeinum/pro-spring-mvc-code/
[ 이 책에서 다루는 내용 ]
■ 스프링 MVC 아키텍처
■ DispatcherServlet을 사용한 개발
■ 개발 환경 설정
■ 로컬 웹 서버 및 원격 클라우드 기반 배포 플랫폼 활용
■ 컨트롤러 작성
■ 스프링 MVC에 REST, AJAX 접목
■ 뷰 결정과 구현
■ 스프링 MVC 애플리케이션 테스트
■ 스프링 보안 구현
■ 스프링 웹 플로우로 애플리케이션 작성
[ 이 책의 대상 독자 ]
이 책은 스프링에 익숙하며 스프링 MVC를 좀 더 자세히 이해하고 싶은 사람들을 대상으로 한다. 스프링 MVC가 처음인 사람들을 기준으로 책의 내용이 주로 맞춰져 있지만, MVC 전문가들도 유용한 정보를 얻을 수 있게 했다.
독자 대부분은 스프링 프레임워크의 핵심 부분을 조금이라도 이해한 상태에서(예를 들어 『Pro Spring』을 한 권 읽고 난 후에) 스프링 MVC를 자세히 알아보고자 이 책을 선택한 웹 개발자일 것이다.
스프링에 대해 잘 모르더라도 묵묵히 이 책(특히 2장)을 읽어나가자. 그러다가 뭔가 좀 부족하다고 생각되면 스프링 레퍼런스 가이드나 『Pro Spring 3』(Apress, 2012)을 참고하면 된다.
로드 존슨의 저서이자 스프링 책의 원조인 『Expert One-on-One J2EE Design and Development』(Wrox, 2002)는 발간된 지 꽤 됐지만, 여전히 주옥 같은 내용으로 가득 차 있다.
[ 이 책의 구성 ]
1장, 스프링 개발 환경 구성에서는 샘플 애플리케이션 개발 환경에 꼭 필요한 것이 무엇인지 알려준다. 또한 샘플 애플리케이션(온라인 서점)의 구조와 목표에 대해서도 다룬다.
2장, 스프링 프레임워크의 기본에서는 스프링 프레임워크의 기본 빌딩 블록을 간략하게 설명한다. 또한 의존 관계 주입(DI, Dependency Injection)과 제어의 역전(IoC, Inversion of Control)에 대해서도 다룬다. 스프링을 잘 모른다면 2장을 적극 추천한다.
3장, 웹 애플리케이션 아키텍처에서는 웹 애플리케이션 아키텍처를 약간 에둘러 설명한다. 웹 애플리케이션을 구성하는 (일반적인) 여러 레이어에 대해 알아보고, 모델(Model), 뷰(View), 컨트롤러(Controller)가 조화를 이루는 화음도 들어본다.
4장, 스프링 MVC 아키텍처에서는 스프링 MVC를 본격적으로 다루기 시작한다. MVC가 무엇이고 웹 애플리케이션은 일반적으로 어떻게 구성되는지 설명한다. 또한 스프링 MVC 엔진의 동력원이라 할 수 있는 DispatcherServlet에 대해서도 알아본다.
5장, 컨트롤러 구현에서는 실제 예제 코드를 보여주며 설명한다. 5장은 이전 장들에서 배운 개념을 토대로 컨트롤러를 작성하며, 스프링 @MVC의 내부를 심도 있게 다룬다. 5장의 마지막 부분부터는 샘플 애플리케이션을 만들기 시작한다.
6장, 컨트롤러 구현: 고급 모든 애플리케이션은 핵심 기능은 아니지만 특정 부분에만 들어맞는 기능이 필요한 경우가 있고, 각기 다른 부분에서 동일한 기능이 필요한 경우도 있다. 6장에서는 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)을 소개하고 스프링 MVC가 공통 웹 문제들을 어떻게 쉽게 해결하는지 살펴본다. 또한 스프링 MVC 내부에 대해 더 자세히 알아보고 요구 사항에 맞춰 기존 인프라를 확장하는 방법도 설명한다.
7장, REST와 AJAX에서는 온라인 서점 애플리케이션을 돋보이게 해줄 기능을 소개한다. 또한 컨트롤러를 REST 웹 서비스로 노출해서 다른 쪽에서 이를 통합하는 방법도 알아본다. 이를 위해 REST와 AJAX에 대해 설명하고, 이 기술들을 애플리케이션에 적용해본다.
8장, 뷰 결정과 구현에서는 스프링 MVC가 뷰를 결정하는 방법을 자세히 알아보고 지금까지 배운 내용을 바탕으로 뷰를 구현해본다. ViewResolver 인프라를 다시 살펴보고, 같은 인프라를 재사용해서 동일 모델을 다르게 활용할 수 있게 해주는 스프링 MVC의 강력한 힘을 보여준다.
9장, 스프링 MVC 애플리케이션 테스트 이제 스프링 MVC를 사용해 원하는 것을 코드로 구현할 수 있게 되었으니 테스트를 해볼 차례다. 9장에서는 스프링 MVC 애플리케이션을 어떻게 테스트하고, 특히 무엇을 테스트할지 알아본다. 여러 가지 테스트 전략을 살펴보고 테스트가 필요한 경우만을 골라 테스트하는 방법도 다룬다. 또한 HTML을 어떻게 테스트할지도 배운다.
10장, 스프링 웹 플로우 지금까지 모든 페이지 인터랙션은 단순했고 각 유스케이스는 한두 페이지밖에 필요하지 않았다. 매니저가 다른 유스케이스를 넣기 원하면 어떻게 해야 할까? 이 장에서는 스프링 MVC의 파트너인 스프링 웹 플로우를 소개한다. 스프링 웹 플로우는 클라이언트와의 웹을 통한 대화를 관리하는 훌륭한 기능을 제공한다.
11장, 스프링 웹 플로우 애플리케이션 작성에서는 10장에서 소개한 스프링 웹 플로우와 스프링 웹 플로우가 해결한 문제들을 바탕으로 실제 스프링 웹 플로우 애플리케이션을 작성하는 방법을 배운다.
12장, 고급 스프링 웹 플로우에서는 11장에서 배운 내용을 바탕으로 스프링 웹 플로우를 더 자세히 살펴보고 그 진정한 가치를 파헤쳐본다.
13장, 스프링 보안에서는 스프링에서 확고한 위치를 차지하고 있는 스프링 보안을 사용해 웹 애플리케이션을 해커로부터 보호하는 방법을 알아본다.
부록 A, 클라우드 파운드리: 클라우드에 배포에서는 클라우드(특히 클라우드 파운드리)에 애플리케이션을 배포하는 절차를 설명한다. 클라우드를 사용하면 우리가 선택한 개발 환경과 끊김 없는 통합이 가능하다.
[ 추천의 글 ]
스프링 MVC는 스프링이 제공하는 기술 중에서 가장 늦게 주목 받았습니다. 스프링이 처음 소개됐을 때는 이미 스트럿츠를 비롯한 다양한 자바 웹 기술이 폭넓게 사용되고 있었기 때문에 스프링을 도입하더라도 웹 MVC는 스프링 MVC 대신 다른 익숙한 웹 기술을 사용하는 경우가 대부분이었습니다. 하지만 당시에 인기를 끌던 자바 웹 기술은 지난 10여 년 동안 대부분 개발이 중단되거나 인기를 잃었습니다. 그 사이 웹 개발 기술에 많은 변화가 있었지만 과거의 기술들은 이런 흐름을 대부분 따라가지 못했기 때문입니다. 반면 스프링 MVC는 꾸준히 그 가치를 인정받고 인기를 얻어 지금은 가장 많은 개발자들이 사용하는 자바 웹 기술이 되었습니다. 스프링 MVC는 스프링의 개발철학을 따라 만들어진 기술이기 때문에 웹 기술의 발전에 유연하고 빠르게 대응해 올 수 있었기 때문입니다.
스프링 MVC는 스프링의 정수가 담긴 기술 집약체입니다. 처음에는 간단한 관례와 사용법을 익혀 빠르게 시작할 수 있지만, 스프링 MVC가 제공하는 기술을 본격적으로 활용하고 이득을 얻으려면 내부 아키텍처에 대한 이해와 확장 방법 등을 잘 이해할 필요가 있습니다. 『스프링 MVC 프로그래밍』은 스프링 MVC를 본격적으로 활용하는 데 필요한 모든 영역의 내용을 충실히 담은, 스프링 MVC에 관한 독보적인 책입니다. 스프링 MVC를 웹 개발에 이용하는 개발자라면 반드시 읽고 개발에 참고하시길 추천합니다.
-이일민 / 이프릴 대표, 『토비의 스프링 3』 & 『토비의 스프링 3.1』 저자
내 기억으로 2004년도에 스프링 프레임워크를 처음 배우기 시작한 것 같다. 그 당시 J2EE와 스트럿츠를 주로 사용했고, 이 기술들 때문에 자바 엔터프라이즈 애플리케이션을 개발할 때 무척이나 애를 먹었다. 스프링은 J2EE를 완전히 배제하지 않고 수많은 모범 사례들을 한데 모으고, 제어의 역전 개념을 소개해 J2EE를 최대한 단순하고 효과적으로 사용하는 방법을 제시했다. 스프링의 이러한 점은 나를 단번에 매료시켰다.
스프링은 J2EE의 기존 부분이나 (특히 하이버네이트 같은) 저명한 프레임워크들과 경쟁이 될 만한 솔루션을 만드는 데 쓸데없이 시간을 낭비하지 않았다. 하지만 웹 애플리케이션 개발만큼은 달랐다. 스프링은 스트럿츠 같은 프레임워크를 대체하는 스프링 MVC라는 완전히 실용적인 웹 프레임워크를 만들었다. 그 당시 나는 스프링 웹 플로우(Spring Web Flow)라는 스프링 MVC의 페이지 플로우 컴포넌트에 주목하고 이 컴포넌트를 사용하면 스프링 기반 웹 애플리케이션 개발이 한층 더 강화될 것이라는 믿음을 가졌다. 스프링 MVC와 스프링 웹 플로우는 이 책에서 다루는 주요 주제이기도 하다.
스프링 MVC 설계는 앞서 발표된 프레임워크들에서 얻은 교훈들을 바탕으로 한다. 유연함과 장기간의 생산성 향상은 스프링의 핵심 설계 원칙이다. 스프링 MVC로 애플리케이션을 잘 설계하면 규모가 커지고 요구 사항이 변경돼도 여전히 유지 보수와 관리가 용이하다. 하지만 반드시 좋은 점만 있는 것은 아니다. 스프링에는 초기 학습 곡선이 있으며, 특히 스프링 MVC의 경우에는 학습 곡선이 더 가파르다. 루비 온 레일즈 같은 새로운 프레임워크가 각광받는 이유도 단기간의 생산성에 뛰어나고, 학습 비용이 낮은 데 있다. 스프링 개발자 커뮤니티는 이러한 단점에 주목하고 스프링 MVC 3.0과 3.1을 발표해 이를 많이 개선했다. 앞으로 곧 배우겠지만, 설정보다는 관례(CoC, convention-over-configuration)나 애노테이션 등을 통해 전보다는 스프링 MVC가 더 쉬워졌다. 이러한 모든 개념을 수용해도 이전 버전과 100% 완벽하게 호환되는 점을 보면 스프링 MVC가 얼마나 유연하고 설계 수준이 높은지 알 수 있다. 스프링 MVC의 탄탄한 기본 원리는 장기적으로 봤을 때 큰 득이 되며, 스프링 MVC는 배우기도 쉬워 일거양득의 장점이 있다. 현재 스프링 웹 플로우는 스프링과 비슷한 발전 양상을 보이고 있다.
2004년 이후로 스프링 MVC와 스프링 웹 플로우는 꾸준한 인기를 얻고 있다. 이 두 프레임워크는 이제 더욱 성숙하고 안정된 자바 개발 프레임워크로 성장했다. 이들 프레임워크를 사용해 웹 애플리케이션을 만드는 것은 탄탄한 기초 위에 건물을 짓는 것과 같다.
이 책의 저자인 마틴과 코엔은 스프링 MVC와 스프링 웹 플로우를 실용적으로 접근해서 소개한다. 우선 저자들은 여러분이 생산적인 개발 환경을 구축하고 스프링 MVC와 웹 플로우로 개발을 시작할 수 있게 도와준다. 이게 다가 아니다. 저자들은 기술들을 세부적으로 다루는 데 그치지 않고 독자 여러분이 이 기술들을 좀 더 잘 이해할 수 있게 그 기저에 놓인 상당수의 개념을 설명하는 데 공을 들였다. 또한 이 책은 보안 강화와 웹 애플리케이션 테스트 같은 여러 중요 주제도 다룬다. 이 책을 읽고 나면 스프링 기술을 사용해 실제 웹 애플리케이션을 개발하는 데 어려움이 없을 것이다.
지금까지도 여러 사람들이 스프링이나 내가 2004년도에 스프링에 추가한 작은 컴포넌트를 통해 많은 도움을 받고 있는 것을 보니 흐뭇한 생각이 든다. 스프링 MVC와 스프링 웹 플로우를 배우고자 하는 분들에게 이 책을 적극 추천한다. 개발자들이 이 흥미진진한 스프링 기술을 배울 수 있도록 기여한 저자들의 노고에 박수를 보내고 싶다.
- 어윈 버뱃(Erwin Vervaet) / 스프링 웹 플로우 프로젝트 설립자
목차
목차
- <b><font color="#9F814F">[ 목차 ]</font></b>
- 1장 스프링 개발 환경 구성
- 준비
- JDK
- 서블릿 컨테이너
- 통합 개발 환경
- 샘플 애플리케이션
- 온라인 서점 샘플 애플리케이션
- 빌드 시스템
- 샘플 애플리케이션 빌드
- 샘플 애플리케이션 배포
- STS
- 그래들 프로젝트를 위한 STS 설정
- STS에 샘플 애플리케이션 불러오기
- tc 서버를 통한 애플리케이션 실행
- 애플리케이션 변경
- 정리
- 준비
- 2장 스프링 프레임워크의 기본
- 스프링 프레임워크
- 의존 관계 주입
- ApplicationContexts
- 리소스 로딩
- 컴포넌트 스캐닝
- 스코프
- 프로파일
- 스프링 기능 활성화
- 관점 지향 프로그래밍
- 웹 애플리케이션
- 정리
- 3장 웹 애플리케이션 아키텍처
- MVC 패턴
- 애플리케이션 레이어
- 관심사의 분리
- 스프링 MVC 애플리케이션 레이어
- 도메인 레이어
- 유저 인터페이스 레이어
- 웹 레이어
- 서비스 레이어
- 데이터 액세스 레이어
- 로마로 통하는 수많은 길
- 정리
- 4장 스프링 MVC 아키텍처
- DispatcherServlet의 요청 처리 과정
- 요청 처리 과정
- 요청 처리 컴포넌트 요약
- DispatcherServlet
- DispatcherServlet 부트스트랩
- DispatcherServlet 설정
- 스프링 MVC 컴포넌트
- HandlerMapping
- HandlerAdapter
- MultipartResolver
- LocaleResolver
- ThemeResolver
- HandlerExceptionResolver
- RequestToViewNameTranslator
- ViewResolver
- FlashMapManager
- 정리
- 5장 컨트롤러 구현
- 컨트롤러 소개
- 인터페이스 기반 컨트롤러
- 애노테이션 기반 컨트롤러
- 뷰 컨트롤러 설정
- 요청 처리 메소드
- 스프링 @MVC가 지원하는 메소드 인수 타입
- 스프링 @MVC가 지원하는 메소드 인수 애노테이션
- 스프링 @MVC가 지원하는 메소드 리턴 값
- 애노테이션 기반 컨트롤러 작성
- 단순한 로그인 컨트롤러
- 도서 검색 페이지
- 도서 상세 페이지
- 데이터 바인딩
- 데이터 바인딩 커스터마이징
- 컨트롤러 단위 커스터마이징
- ModelAttributes
- 타입 변환
- 모델 속성의 유효성 검증
- 국제화
- 메시지 소스
- LocaleResolver
- LocaleChangeInterceptor
- 정리
- 컨트롤러 소개
- 6장 컨트롤러 구현 - 고급
- 스코프가 적용된 빈 사용
- 카트에 물건 담기
- 체크아웃 구현
- 횡단 관심사
- 인터셉터
- 예외 처리
- SimpleMappingExceptionResolver
- 스프링 @MVC 확장
- RequestMappingHandlerMapping 확장
- RequestMappingHandlerAdapter 확장
- RequestDataValueProcessor 사용
- 정리
- 스코프가 적용된 빈 사용
- 7장 REST와 AJAX
- REST
- 리소스 식별
- 리소스에 대한 작업
- AJAX
- 애플리케이션에 AJAX 추가
- AJAX와 REST 간의 결합
- 점진적 향상
- 파일 업로드 처리
- 파일 업로드 설정
- 파일 업로드를 처리하는 요청 처리 메소드
- 예외 처리
- 정리
- REST
- 8장 뷰 결정과 구현
- 뷰 리졸버와 뷰
- 뷰 리졸버
- BeanNameViewResolver
- XmlViewResolver
- ResourceBundleViewResolver
- UrlBasedViewResolver
- InternalResourceViewResolver
- XsltViewResolver
- ContentNegotiatingViewResolver
- 커스텀 ViewResolver 구현
- 뷰 기술
- JSP
- JSF
- 타일즈
- 벨로시티와 프리마커
- 엑셀
- XML과 JSON
- JasperReports
- 정리
- 9장 스프링 MVC 애플리케이션 테스트
- 테스트 소개
- 테스트 작성이 항상 귀찮기만 한 이유
- 프로젝트 내의 테스트 활성화
- 테스트 종류
- 기본 유닛 테스트 설정
- 테스트 코드 커버리지
- 스프링 테스트 지원 기능 사용
- 통합 테스트 설정
- 목 객체 사용
- 목 객체는 무엇일까?
- AccountService 테스트
- MVC 로직 테스트
- 스프링 목 객체 사용
- 스프링 MVC 테스트 소개
- 프런트엔드 테스트 자동화
- 셀레늄으로 프런트엔드 테스트
- 셀레늄 테스트 작성
- 셀레늄 IDE 사용
- 그래들을 이용한 프런트엔드 테스트
- 정리
- 테스트 소개
- 10장 스프링 웹 플로우
- 웹 플로우가 필요한 이유
- 플로우 개념
- 세분화된 스코프
- 상태 관리 자동화
- 요청 동기화
- PRG
- 내비게이션 제어
- 웹 플로우가 필요 없는 경우
- 플로우의 기본 구성 요소
- 플로우
- 뷰 상태
- 상태 전환
- 평가 액션
- 표현식
- 설정
- 의존 모듈
- 웹 플로우 설정
- 스프링 MVC와 스프링 웹 플로우 통합 설정
- 첫 번째 플로우 작성
- 홈 페이지 생성
- 주문 생성 플로우 구현
- 플로우 전체 모습
- 정리
- 웹 플로우가 필요한 이유
- 11장 스프링 웹 플로우 애플리케이션 작성
- 웹 플로우 주요 개념
- 플로우 정의
- 웹 플로우 스코프
- 내장 객체
- 온라인 서점 개선
- 도서 카테고리 선택
- 도서와 배송 옵션 선택
- JSR 303 애노테이션을 사용한 폼 검증
- 변수 지정과 스코프 접근
- 플로우 변수
- 뷰에서 스코프 변수에 접근
- 프로그래밍으로 스코프에 접근
- 액션 수행 제어
- <on-start>
- <on-end>
- <on-entry>
- <on-exit>
- <on-render>
- 액션 수행 제어: 서브엘리먼트
- 전역 전환
- 서브플로우
- 온라인 서점 개선
- 서브플로우에서 인증 구현
- 결정 상태
- 액션 상태
- 결과 이벤트로 작업
- 주문 생성 플로우의 전체 모습
- 서브플로우 입출력 매핑
- 주문 프로세스를 서브플로우로 생성
- 종료 상태
- 정리
- 웹 플로우 주요 개념
- 12장 고급 스프링 웹 플로우
- 상속
- 플로우 상속
- 상태 상속
- 웹 플로우 커스터마이징 설정
- 플로우 수행과 대화 스냅샷
- 표현 언어 파서 변경
- 웹 플로우 1 이전
- 예외 처리
- 예외 전환
- 커스텀 예외 핸들러
- 명시적 폼 바인딩
- 웹 플로우의 AJAX 지원
- AJAX를 사용하기 위한 웹 플로우 설정
- 뷰 준비
- 플로우 변경
- 스프링 JS와 JQuery를 사용해 뷰에 AJAX 추가
- 플로우 수행 리스너
- 플로우 수행 리스너 작성
- 플로우 수행 리스너 메소드
- 플로우가 관리하는 퍼시스턴스 컨텍스트
- 데이터베이스부터 뷰까지
- 퍼시스턴스 컨텍스트의 생명 연장
- FMPC 적용
- 주문 내역 리팩토링
- 정리
- 상속
- 13장 스프링 보안
- 보안 소개
- 애플리케이션 보안이란?
- 일반적인 보안 원칙
- 앞으로 다룰 내용
- 예제 애플리케이션 준비
- 온라인 서점에 보안 적용
- 스프링 보안 의존성 추가
- 스프링 보안 활성화
- 보안 리소스 지정
- 리소스에 대한 접근 설정
- 보안 인증 설정
- 로그인과 로그아웃에 스프링 보안 적용
- 전체 스프링 보안 설정
- 데이터베이스로 사용자 정보 이동
- 플로우 안전하게 보호
- 플로우에 접근 속성 추가
- SecurityFlowExecutionListener 설정
- 전송 보안
- 지역화
- 역할 기반 접근 제어
- 접근 권한 확인
- 페이지에 태그 라이브러리 사용
- 코드에 애노테이션 넣기
- 정리
- 보안 소개
- 부록 클라우드 파운드리: 클라우드에 배포
- 클라우드 컴퓨팅
- 클라우드 파운드리
- 애플리케이션 배포
- 클라우드 파운드리에서 디버깅
도서 오류 신고
정오표
정오표
[ p.165 아래에서 1행 ]
(띄어쓰기 정정)
애노테이션은 org.sp ringframework.stereotype.Controller
→ 애노테이션은 org.springframework.stereotype.Controller
2016. 12. 14 수정사항
[p.232: 아래에서 5행]
그fj므로
->
그러므로
[p.264: 아래에서 3행]
InterceptorRegistory 사용
->
InterceptorRegistry 사용
2016. 12. 15 수정사항
[p.103: 주석4]
http://static.springsource.org/spring/docs/3.1.x/spring-frameworkreference/html/aop.html#aop-atconfigurable
->
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-atconfigurable
2016. 12. 19 수정사항
[p. 425: 주석 20번 뒤]
웹드라이버(20)로는 selenium-android-driver, selenium-chrome-driverelenium-ie-driver, ...
->
웹드라이버(20)로는 selenium-android-driver, selenium-chrome-driver, selenium-ie-driver, ...