<프로 스프링 3>은 스프링에 대한 완벽 가이드이자 스프링답게 스프링 애플리케이션을 개발하는 법을 소개하는 최고의 지침서다. 이 책에서는 스프링의 다양한 요소를 폭넓게 다루며 언제 어떤 식으로 스프링 애플리케이션 개발에 접근해야 하는지 자세히 설명하고 있다. 그래서 이 책은 스프링을 처음 접하는 독자는 물론, 나름 스프링을 조금 안다고 하는 독자들도 꼭 읽어야 하는 스프링의 바이블 같은 책이다.

이 책은 단순히 스프링의 방대한 기능이나 API를 설명하는 데 그치지 않는다. 이 책에서는 왜 스프링의 설계 방식이 중요하고, 스프링답게 애플리케이션을 설계하고 구현하는 게 이로운지 자세히 설명한다. 또 스프링이 제공하는 다양한 옵션 사이에서(이를테면 XML 설정, 애노테이션 설정, 자바 설정 등) 언제 어떤 옵션을 택하는 게 가장 적합한지 다양한 실전 사례를 통해 설명한다. 그래서 이 책을 읽다 보면 자연스럽게 스프링의 철학을 체득할 수 있고, 모범 개발 기법을 통해 애플리케이션을 개발하는 혜안을 얻을 수 있다.

또, 최신 스프링 환경에 맞게 다양한 최신 기법을 소개하는 것도 빼먹지 않는다. 예컨대 스프링 3.1에서 새로 도입된 프로필 기능을 활용해 설정을 분리하는 기법이나 서블릿 3.0 컨테이너의 멀티파트 지원 기능을 활용한 파일 업로드 기능을 활용한 예제가 이에 해당한다. 더불어 저자는 일반적으로 개발자들에게 익숙한 DAO 레이어를 그대로 사용하는 대신 JPA를 활용해 엔티티매니저를 서비스 레이어로 직접 주입하는 방식을 통해 최신 개발 기법을 설명하는 등 스프링 애플리케이션에서 불필요한 요소를 제거하고 애플리케이션을 유지보수하기 쉽게 관리하는 다양한 전략을 소개한다.

이 책에서는 각기 다른 스프링 관련 주제를 폭넓게 다루는 동시에 모든 기능을 한데 아우르는 대규모 애플리케이션의 개발도 함께 진행한다. 이 책에서 계속해서 개발하는 SpringBlog 애플리케이션은 스프링 코어, 스프링 MVC, 스프링 시큐리티, AOP를 통한 필터링, 스프링 뷰 기술(Ajax, 제이쿼리), 아파치 타일즈, 스프링 배치, 스프링 인티그레이션 등 가히 스프링의 모든 기능을 담았다고 해도 과언이 아닐 정도로 방대하다. 따라서 독자들은 각 장을 통해 스프링 관련 지식을 쌓을 수 있음은 물론 SpringBlog 예제를 통해 전체적인 맥락에서 스프링을 이해하고 각 요소가 서로 어떻게 연동되는지 한눈에 볼 수 있다.

프로 스프링 3로 엔터프라이즈 자바 애플리케이션 개발을 마스터하자. 스프링 프레임워크의 3.1 버전을 다루는 이 책은 광범위한 스프링 레퍼런스이자 가장 앞선 엔터프라이즈 자바 애플리케이션 개발 프레임워크의 강력한 힘을 활용하게 해주는 실전 가이드다.

저자인 클라렌스 호와 롭 해롭은 스프링의 핵심 및 하이버네이트, 마이바티스, EJB과 같은 다른 선도 자바 기술과의 연동을 다룬다. 저자들은 자신들의 혜안과 실전 경험을 바탕으로 리모팅, 트랜잭션, 웹과 프레젠테이션 티어 등 다양한 엔터프라이즈 애플리케이션 개발법을 설명한다. 또 모든 기능을 갖춘 예제 애플리케이션을 통해 이 책에서 소개한 많은 기술과 기법을 적용하는 법을 보여주고 이들 기술이 어떻게 서로 연동되는지 살펴본다.

프로 스프링 3에서는 다음과 같은 주제를 다룬다.

  • 제어 역전(IoC) 및 의존성 주입(DI)의 사용법
  • 스프링의 관점 지향 프로그래밍(AOP) 사용법 및 AOP의 중요성
  • 스프링 MVC 및 웹 플로우를 활용한 스프링 기반 웹 애플리케이션 개발법
  • 그루비 같은 스크립트 언어를 통한 애플리케이션 기능 개선법

머리 끝부터 발 끝까지 복잡한 스프링 애플리케이션을 개발할 수 있는 지식으로 자신을 무장하자. 이 책은 처음으로 스프링을 배우거나 스프링 프레임워크를 거의 접한 적이 없는 숙련된 자바 개발자를 위한 책이다. 이 책은 엔터프라이즈 자바 애플리케이션 개발 또는 설계에 참여하고 있는 독자를 대상으로 한다.

클라렌스 호(Clarence Ho)

클라렌스 호는 홍콩에 위치한 소프트웨어 컨설팅 회사인 SkywideSoft Technology Limited(www.skywidesoft.com)의 자바 아키텍트다. 클라렌스는 IT 분야에서 20년 이상 여러 인하우스 애플리케이션 개발 프로젝트에서 팀 리더를 맡았으며, 클라이언트에게 엔터프라이즈 컨설팅 서비스를 제공했다. 클라렌스는 2001년부터 자바 프로그래밍을 시작했고, 2005년부터는 EJB, 스프링 프레임워크, 하이버네이트, JMS, WS 같은 기술을 사용해 JEE 애플리케이션을 설계하고 개발하는 업무를 집중적으로 담당했다. 클라렌스는 2005년부터 자바 엔터프라이즈 아키텍트로 근무하고 있다. 또한 국제 금융 기관의 컨설턴트로 근무하면서 자바 EE 아키텍처 설계, 교육, 기술 솔루션에 대한 컨설팅, 애플리케이션 개발 모범 기법에 대한 교육 등 여러 분야에서 기여하고 있다.

롭 해롭(Rob Harrop)

롭 해롭은 큰 성공을 거둔 스프링 프레임워크를 제공하는 소프트웨어 회사인 스프링소스의 공동 설립자다. 현재 롭은 First Banco의 CTO다. 스프링소스를 설립하기 전에는 영국 맨처스터에 있는 부티크 컨설트 업체인 Cake Solutions의 공동 설립자이자 CTO였다. 롭은 대용량 대규모 엔터프라이즈 시스템 개발을 전문으로 한다. 롭은 5권 이상의 기술 서적을 쓰거나 함께 썼다. 트위터에서는 @robertharrop을 통해 롭을 팔로우할 수 있다.

유윤선

인디 개발자이자 프리랜서 번역가로 활동 중이다. 이따금 http://joshy21.com/weblog에 번역과 상관없는 글을 올리고 있다. 역서로는 『라이프해커』,『시작하세요! 아이폰 5 프로그래밍』, 『안드로이드 레시피』, 『시작하세요! Unity 3D 게임 프로그래밍』, 『시작하세요! 안드로이드 게임 프로그래밍』, 『시작하세요! 아이폰 4 프로그래밍』, 『플래시 빌더 4 & 플렉스 4 바이블』, 『쉽고 빠르게 익히는 CSS3』, 『스프링 시큐리티 3』, 『시작하세요! 아이패드 프로그래밍』, 『플래시 게임 마스터(에이콘출판사)』, 『Adobe AIR 인 액션』, 『스프링 3 레시피(위키북스, 공역)』, 『액션스크립트 3.0 완벽가이드(인사이트, 공역)』 등이 있다.

  • ▣ 01장_스프링 소개
    • 스프링이란?
      • 제어 역전 또는 의존성 주입
      • 의존성 주입의 발전 과정
      • 의존성 주입을 넘어
    • 스프링 프로젝트
      • 스프링의 기원
      • 스프링 커뮤니티
      • Spring .NET
      • 스프링소스 툴 스위트/스프링 IDE
      • 스프링 시큐리티 프로젝트
      • 스프링 배치 및 스프링 인티그레이션
      • 그 외 많은 프로젝트
    • 스프링의 대안
      • JBoss Seam 프레임워크
      • 구글 주스
      • PicoContainer
      • JEE 6 컨테이너
    • 정리
    •  
  • ▣ 02장_스프링 시작하기
    • 스프링 프레임워크 내려받기
      • 표준 배포판 내려받기
      • 깃허브를 통한 스프링 체크아웃
    • 스프링 패키징의 이해
      • 스프링 모듈
      • 애플리케이션에 적합한 모듈 선택
      • 메이븐 저장소의 스프링 모듈
    • 스프링 의존성 분석
    • 예제 애플리케이션
      • 스프링 예제 소스코드 내려받기
      • Petclinic 애플리케이션
      • Petclinic 그루비 애플리케이션
      • jPetStore 애플리케이션
      • 스프링 설정 기본 애플리케이션
      • 스프링 작업과 스케줄링 애플리케이션
      • 스프링 MVC 쇼케이스 애플리케이션
      • 스프링 MVC 기본과 Ajax 애플리케이션
      • 스프링 Petcare 애플리케이션
      • 스프링 웹플로우 애플리케이션
    • 스프링 문서
    • 스프링을 활용한 'Hello World!' 출력
      • 예제 'Hello World!' 애플리케이션 개발
      • STS에서의 스프링 프로젝트 생성
    • 정리
    •  
  • ▣ 03장_예제 애플리케이션
    • SpringBlog 애플리케이션의 요구 조건
      • 보안과 인증
      • 블로그 글 보기
      • 블로그 글 올리기
      • 블로그 글에 댓글 달기
      • 비속어 필터링하기
      • 블로그 글이나 댓글에 파일 첨부하기
      • 블로그 행동 오디팅하기
      • RSS 피드
      • XML 파일로 블로그 업로드하기
      • SpringBlog의 구현
      • 개발 툴과 의존성 관리
      • 애플리케이션 설계
      • 애플리케이션 설정 관리
      • SpringBlog의 계층화된 애플리케이션 아키텍처
      • 영속성 레이어의 구현
      • 서비스 레이어의 구현
      • AOP를 활용한 비속어 필터링
    • 정리
    •  
  • ▣ 04장_스프링의 IoC 및 DI 소개
    • 제어 역전과 의존성 주입
    • 제어 역전의 종류
      • 의존성 풀
      • 컨텍스트화된 의존성 룩업
      • 생성자 의존성 주입
      • 세터 의존성 주입
      • 주입 vs. 룩업
      • 세터 주입 vs. 생성자 주입
    • 스프링의 제어 역전
    • 스프링을 통한 의존성 주입
      • 빈 및 빈팩터리
      • BeanFactory 구현체
      • ApplicationContext
    • ApplicationContext의 설정
      • 스프링 설정 옵션(XML 및 자바 애노테이션)
      • 스프링 컴포넌트의 선언
      • 세터 주입의 활용
      • 생성자 주입의 활용
      • 주입 파라미터
      • 메서드 주입
      • 빈 이름 지정 방식의 이해
      • 빈 인스턴스화 모드
    • 의존성 리졸브
    • 빈 자동 연결
      • 자동 연결 모드
      • 자동 연결을 사용할 시점
    • 빈 상속
    • 정리
    •  
  • ▣ 05장_스프링 설정 상세
    • 스프링이 애플리케이션 이식성에 미치는 영향
    • 빈 생명주기 관리
      • 빈 생성 시점에 대한 개입
      • 빈 소멸에 대한 개입
    • 빈의 스프링 인식
      • BeanNameAware 인터페이스의 사용
      • ApplicationContextAware 인터페이스의 사용
    • FactoryBean의 사용
      • 커스텀 FactoryBean 예제: MessageDigestFactoryBean
      • FactoryBean 직접 접근
      • factory-bean 및 factory-method 어트리뷰트의 사용
    • 자바빈 프로퍼티에디터
      • 내장 프로퍼티에디터
      • 커스텀 PropertyEditor의 생성
    • 스프링 ApplicationContext 설정 살펴보기
      • MessageSource를 활용한 국제화
      • 단독 실행형 애플리케이션에서의 MessageSource 사용
      • MessageSourceResolvable 인터페이스
      • 애플리케이션 이벤트
      • 리소스 접근
    • 자바 클래스를 활용한 설정
      • 자바를 활용한 ApplicationContext 설정
      • 자바 설정과 XML 설정 사이의 선택
    • 프로필
      • 스프링 프로필을 사용한 예제
      • 사용자 프로필에 대한 고려 사항
    • Environment와 PropertySource 추상화
    • JSR-330 애노테이션을 활용한 설정
    • 정리
    •  
  • ▣ 06장_스프링 AOP 소개
    • AOP 개념
    • AOP의 종류
      • 정적 AOP
      • 동적 AOP
      • AOP 방식의 선택
    • 스프링에서의 AOP
      • AOP 연합
      • AOP를 활용한 'Hello World!'
      • 스프링 AOP 아키텍처
      • ProxyFactory 클래스에 대한 소개
      • 스프링에서의 어드바이스 생성
    • 스프링의 어드바이저와 포인트컷
      • Pointcut 인터페이스
    • 프록시의 이해
      • JDK 동적 프록시의 사용
      • CGLIB 프록시의 사용
      • 프록시 성능 비교
      • 어떤 프록시를 사용할까?
    • 정리
    •  
  • ▣ 07장_스프링 AOP와 애노테이션 활용
    • 포인트컷의 고급 활용
      • 제어 흐름 포인트컷의 사용
      • ComposablePointcut의 활용
      • 합성 및 Pointcut 인터페이스
      • 포인트컷 정리
    • 인트로덕션의 시작
      • 인트로덕션 기본
      • 인트로덕션을 통한 객체 수정 감지
      • 인트로덕션 정리
    • AOP 프레임워크 서비스
      • 선언적인 AOP 설정
      • ProxyFactoryBean의 사용
      • aop 네임스페이스 사용
      • @AspectJ 방식의 애노테이션 활용
      • 선언적 스프링 AOP 설정에 대한 고려 사항
    • AspectJ 연동
      • AspectJ 소개
      • 싱글턴 애스펙트의 활용
    • 예제 애플리케이션의 AOP
      • SpringBlog의 비속어 필터링
    • 정리
    •  
  • ▣ 08장_스프링 JDBC 지원
    • 예제 코드의 예제 데이터 모델
    • JDBC 인프라스트럭처 살펴보기
    • 스프링 JDBC 인프라스트럭처
      • 개요 및 사용 패키지
      • 데이터베이스 커넥션과 데이터소스
      • 임베디드 데이터베이스 지원
    • DAO 클래스의 데이터소스 활용
    • 예외 처리
    • JdbcTemplate 클래스
      • DAO 클래스에서의 JdbcTemplate- 초기화
      • 단일 값을 조회하는 JdbcTemplate 클래스의 사용
      • NamedParameterJdbcTemplate를 통한 네임드 파라미터의 활용
      • RowMapper를 활용한 도메인 객체 조회
      • ResultSetExtractor를 활용한 중첩 도메인 객체 조회
    • JDBC 작업을 모델링하는 스프링 클래스
      • 애노테이션을 사용한 JDBC DAO 설정
      • MappingSqlQuery를 활용한 데이터 쿼리
      • SqlUpdate를 활용한 데이터 업데이트
      • 데이터 삽입 및 생성 키 조회
      • BatchSqlUpdate를 활용한 배치 작업
      • SqlFunction을 활용한 저장 함수 호출
    • 자바 설정의 활용
    • 스프링 데이터 프로젝트 -- JDBC 확장 프로젝트
    • JDBC 사용에 대한 고려사항
    • 정리
    •  
  • ▣ 09장_하이버네이트 활용
    • STS를 통한 하이버네이트 유틸리티 프로젝트 생성
    • 예제 코드에 사용할 예제 데이터
    • 하이버네이트 SessionFactory 설정
    • 하이버네이트 애노테이션을 활용한 ORM 매핑
      • 간단한 매핑
      • 일대다 매핑
      • 다대다 매핑
    • 하이버네이트 Session 인터페이스
    • 하이버네이트를 활용한 데이터베이스 작업
      • 하이버네이트 쿼리 언어를 활용한 데이터 쿼리
      • 데이터 삽입
      • 데이터 업데이트
      • 데이터 삭제
    • 하이버네이트 사용에 대한 고려 사항
    • 정리
    •  
  • ▣ 10장_JPA2를 활용한 데이터 접근
    • JPA 2 소개
      • STS에서의 스프링 JPA 유틸리티 프로젝트 생성
      • 예제 코드의 예제 데이터
      • JPA EntityManagerFactory의 설정
      • JPA 애노테이션을 활용한 ORM 매핑
      • DAO 레이어의 제거
      • 서비스 레이어 클래스로의 EntityManager 주입
    • JPA를 활용한 데이터 작업
      • 자바 영속성 쿼리 언어를 활용한 데이터 쿼리
      • 데이터 삽입
      • 데이터 업데이트
      • 데이터 삭제
      • 네이티브 쿼리
      • JPA 2 기준 API를 활용한 기준 쿼리
    • 스프링 데이터 JPA 소개
      • 스프링 데이터 JPA 라이브러리 의존성 추가
      • 스프링 데이터 JPA 저장소 추상화를 활용한 데이터베이스 작업
      • 엔티티 클래스의 변화 추적
    • 하이버네이트 엔버스를 활용한 엔티티 버전 관리
      • 하이버네이트 엔버스 의존성 추가
      • 엔티티 버전 관리 테이블의 추가
      • 엔티티 버전 관리를 위한 EntityManagerFactory 설정
      • 엔티티 버전 관리와 히스토리 조회에 필요한 코드 수정
      • 엔티티 버전 관리 테스트
    • JPA 사용에 대한 고려 사항
    • 예제 애플리케이션에선의 JPA 활용
      • 데이터베이스 백엔드
      • JPA를 영속성 레이어 구현체로 활용
      • 오디팅과 엔티티 버전 관리
    • 정리
    •  
  • ▣ 11장_마이바티스 활용
    • 스프링에서 마이바티스 시작하기
      • 마이바티스 소개
      • STS에서 마이바티스 지원 기능을 갖춘 유틸리티 프로젝트의 생성
      • 예제 코드에서 사용할 예제 데이터 모델
      • MyBatis SqlSessionFactory와 MapperScannerConfigurer 설정
    • 마이바티스의 SQL 매핑
      • 매퍼 인터페이스와 SQL 매핑 파일
      • SQL 매핑 XML 설정
    • 마이바티스를 활용한 데이터베이스 작업
      • 데이터 조회
      • 데이터 삽입
      • 데이터 업데이트
      • 데이터 삭제
    • 마이바티스 사용에 대한 고려사항
    • 예제 애플리케이션의 마이바티스 활용
      • 데이터베이스 백엔드
      • 마이바티스를 활용한 영속성 레이어 구현체
      • 오디팅과 엔티티 버전 관리
    • 정리
    •  
  • ▣ 12장_스프링 기반 애플리케이션의 설계와 구현
    • 인터페이스를 통한 설계
      • 인터페이스로 설계해야 하는 이유
      • 팩터리 패턴
      • 인터페이스 기반 설계에 미치는 스프링의 영향
    • 도메인 객체 모델의 개발
      • 스프링과 도메인 객체 모델
      • DOM은 값 객체와 다르다
      • 도메인 객체 모델의 생성 이유
      • 도메인 객체 모델링
      • 동작 캡슐화 여부에 대한 결정
    • SpringBlog 도메인 객체 모델
      • 도메인 객체 모델 정리
    • 데이터 접근 레이어의 설계 및 개발
      • 현실적인 설계 고려 사항
      • 데이터 접근 레이어 정리
    • 서비스 레이어의 설계
      • 서비스 레이어가 필요한 이유
      • 비즈니스 인터페이스의 설계
      • 서비스 레이어 정리
    • 정리
    •  
  • ▣ 13장_트랜잭션 관리
    • 스프링 트랜잭션 추상 레이어 살펴보기
      • 트랜잭션의 종류
      • PlatformTransactionManager의 구현체
    • 트랜잭션 속성의 분석
      • TransactionDefinition 인터페이스
      • TransactionStatus 인터페이스
    • 예제 데이터 모델과 예제 코드의 인프라스트럭처
      • 의존성을 포함한 간단한 스프링 JPA 유틸리티 프로젝트 생성
      • 예제 데이터 모델과 공통 클래스
    • 스프링의 선언적 트랜잭션과 프로그래밍적 트랜잭션
      • 애노테이션 활용한 트랜잭션 관리
      • XML 설정을 활용한 트랜잭션 관리
      • 프로그래밍적 트랜잭션
      • 트랜잭션 관리에 대한 고려 사항
    • 스프링의 전역 트랜잭션
      • JTA 예제 구현에 필요한 인프라스트럭처
      • JTA를 활용한 전역 트랜잭션 구현
      • JTA 트랜잭션 매니저 사용에 대한 고려 사항
    • 정리
    •  
  • ▣ 14장_타입 변환과 포매팅을 활용한 유효성 검증
    • STS를 통한 예제 프로젝트의 생성
    • 스프링 타입 변환 시스템
      • PropertyEditor를 활용한 스프링의 변환
      • 스프링 3 타입 변환 소개
    • 스프링 3의 필드 포매팅
      • 커스텀 포매터의 구현
      • ConversionServiceFactoryBean의 설정
    • 스프링의 유효성 검증
      • 스프링 Validator 인터페이스의 활용
      • JSR-303 빈 유효성 검증의 활용
      • 어떤 유효성 검증 API를 써야 할까?
    • 예제 애플리케이션의 타입 변환과 포매팅을 활용한 유효성 검증
    • 정리
    • STS를 통한 예제 프로젝트 생성
    •  
  • ▣ 15장_작업 스케줄링
    • 스프링의 작업 스케줄링
      • 스프링 TaskScheduler 추상화 소개
      • 간단한 작업
      • task 네임스페이스를 활용한 작업 스케줄링
      • 애노테이션을 활용한 작업 스케줄링
    • 스프링의 비동기적 작업 실행
    • 예제 애플리케이션의 작업 스케줄링
    • 정리
    •  
  • ▣ 16장_스프링 리모팅 활용
    • STS를 통한 예제 프로젝트 생성
    • 예제에 사용할 서비스 레이어의 구현
      • JPA 백엔드에 필요한 의존성 추가
      • 프로젝트의 확인
      • 예제의 데이터 모델
      • ContactService의 구현 및 설정
    • 스프링 HTTP 호출자의 활용
      • 서비스의 노출
      • 서비스의 호출
    • 스프링의 JMS 활용
      • ActiveMQ 설정
      • 스프링에서의 JMS 리스너 구현
      • 스프링에서의 JMS 메시지 전송
    • 스프링에서의 RESTful-WS 활용
      • RESTful 웹 서비스의 소개
      • 예제에 필요한 의존성의 추가
      • 연락처 RESTful 웹 서비스
      • 스프링 MVC를 활용한 RESTful 웹 서비스 노출
      • curl을 활용한 RESTful-WS 테스트
      • RestTemplate을 활용한 RESTful-WS 접근
      • 스프링 시큐리티를 활용한 RESTful-WS 보호
      • RESTful 웹 서비스에서의 JSR-303 활용
    • 예제 애플리케이션에서의 리모팅
    • 정리
    •  
  • ▣ 17장_스프링 웹 애플리케이션
    • STS를 통한 예제 프로젝트 생성
      • 예제의 서비스 레이어 구현
      • 예제에 사용할 데이터 모델
    • ContactService의 구현 및 설정
    • MVC 및 스프링 MVC 소개
      • MVC 소개
      • 스프링 MVC 소개
    • 스프링 MVC의 첫 번째 뷰 생성
      • DispatcherServlet의 설정
      • ContactController의 구현
      • 연락처 목록 뷰의 구현
      • 연락처 목록 뷰의 테스트
    • 스프링 MVC 프로젝트 구조의 개요
    • i18n(국제화)
      • DispatcherServlet 설정에서의 i18n 설정
      • 연락처 목록 뷰에 i18n 지원 기능 추가
    • 테마와 템플릿
      • 테마 지원
      • 아파치 타일즈를 활용한 뷰 템플릿
    • 연락처 정보 뷰의 구현
      • URL의 뷰 매핑
      • 연락처 표시 뷰의 구현
      • 연락처 편집 뷰의 구현
      • 연락처 추가 뷰의 구현
      • JSR-303 빈 유효성 검증 활성화
    • 제이쿼리 및 제이쿼리 UI의 활용
      • 제이쿼리 및 제이쿼리 UI의 소개
      • 뷰에서의 제이쿼리 및 제이쿼리 UI 활성화
      • CKEditor를 통한 리치 텍스트 편집
      • jqGrid를 활용한 페이지형 데이터 그리드
    • 파일 업로드 처리
      • 파입 업로드 지원의 설정
      • 파일 업로드 지원을 위한 컨트롤러 수정
    • 스프링 시큐리티를 활용한 웹 애플리케이션 보호
      • 스프링 시큐리티 설정
      • 애플리케이션의 로그인 기능 추가
      • 애노테이션을 활용한 컨트롤러 메서드 보호
    • 서블릿 3 코드 기반 설정의 지원
    • 예제 애플리케이션에서의 스프링 MVC
      • SpringBlog의 MVC 구현체
      • 리치 사용자 인터페이스와 Ajax
      • 보안 지원
      • 서블릿 3.0 지원
    • 정리
    •  
  • ▣ 18장_스프링 웹 플로우와 JSF
    • 예제 백엔드 프로젝트
      • 예제 백엔드 서비스 레이어
      • STS에서의 예제 백엔드 임포트
    • 스프링 웹 플로우 소개
      • 스프링 웹 플로우 모델
      • 스프링 웹 플로우의 기능
    • JSF 소개
      • 모델 상호작용
      • 내비게이션
      • 애플리케이션 생명 주기
    • 스프링 웹 플로우 애플리케이션 예제
      • 예제 플로우의 설계
      • 프로젝트 구조
    • 스프링 웹 플로우 및 JSF 설정
      • 필요한 의존성의 추가
      • JSF의 설정
      • 웹 배포 디스크립터의 설정
      • 스프링 웹 플로우 및 스프링 MVC 설정
    • 예제 플로우의 구현
      • 플로우 정의
      • 템플릿 페이지의 구현
      • 커스텀 변환기의 구현
      • 컨트롤러 및 지원 빈의 구현
      • 연락처 보기 뷰의 구현
    • 연락처 추가 플로우의 구현
      • 1단계: 기본 정보 입력
      • 2단계: 취미 선택
      • 3단계: 정보 검토
      • 4단계: 연락처 추가 완료
    • 정리
    •  
  • ▣ 19장_스프링 테스트
    • 예제 웹 애플리케이션 프로젝트
      • STS에서의 예제 백엔드 임포트
    • 엔터프라이즈 테스트 프레임워크 소개
    • 논리 단위 테스트의 구현
      • 필요한 의존성의 추가
      • 스프링 MVC 컨트롤러 단위 테스트
    • 통합 단위 테스트의 구현
      • 필요한 의존성의 추가
      • 서비스 레이어 테스트에 필요한 프로필 설정
      • 인프라스트럭처 클래스의 구현
      • 서비스 레이어의 단위 테스트
    • 프론트엔드 단위 테스트의 구현
      • 필요한 의존성의 추가
      • Selenium 소개
      • 프론트엔드 UI의 테스트 케이스 구현
    • 테스트 케이스 코드 커버리지의 확인
    • 정리
    •  
  • ▣ 20장_스프링 프로젝트: 배치, 인티그레이션, 루
    • 예제 프로젝트
      • STS에서 예제 백엔드 불러오기
    • 스프링 배치 소개
      • 배치 작업 흐름과 처리
      • 스프링 배치 인프라스트럭처 컴포넌트
    • 스프링 배치 메타데이터
      • 작업 실행 정책
    • 배치 작업의 구현
      • 필요한 의존성의 추가
      • 스프링 배치 인프라스트럭처 설정
      • 연락처 불러오기 작업의 구현
    • 스프링 인티그레이션과 연동한 스프링 배치 활용
      • 스프링 인티그레이션의 소개
      • 필요한 의존성의 추가
      • 파일 폴링 메커니즘의 구현
    • 스프링 루 소개
      • STS에서의 스프링 루 설정
      • 스프링 루 프로젝트의 생성
      • 프레젠테이션 레이어와 엔티티 클래스의 설정
      • 서비스 레이어의 설정
      • 프레젠테이션 레이어의 설정
      • 스프링 루 애드온
      • 스프링 루에 대한 결론
    • 예제 애플리케이션에서의 스프링 배치 및 스프링 인티그레이션 활용
    • 정리
    •  
  • ▣ 21장_예제 애플리케이션 살펴보기
    • 예제 애플리케이션의 설정
      • 프로젝트 설정
      • MySQL과 H2 데이터베이스 사이의 전환
      • JPA와 마이바티스 구현체 사이의 전환
    • 애플리케이션 설계
      • 데이터 모델
      • 도메인 객체 모델
      • UML 모델
    • 설정 상세 정보
    • 구현체 상세 내용
      • 서비스 레이어 구현체
      • AOP를 활용한 비속어 필터
      • 오디팅 데이터를 정리하는 작업 스케줄링
      • 프레젠테이션 레이어
      • 웹 리소스 파일 폴더 구조
    • 정리
    •  
  • ▣ 22장_스프링의 스크립트 지원
    • 예제 프로젝트
      • 간단한 스프링 유틸리티 프로젝트의 생성
      • 이클립스용 그루비 플러그인의 설치
    • 자바의 스크립트 지원
    • 그루비의 소개
      • 동적 타입 지정
      • 단순한 구문
      • 클로저
    • 그루비와 스프링의 활용
      • 필요한 의존성의 추가
      • Contact 도메인
      • 규칙 엔진의 구현
      • 규칙 팩터리를 갱신 가능 빈으로 구현
      • 나이 카테고리 규칙의 테스트
    • 정리
    •  
  • ▣ 23장_스프링 애플리케이션 모니터링
    • 예제 프로젝트
    • 스프링의 JMX 지원
      • 스프링 빈의 JMX 익스포트
      • JMX 모니터링을 위한 VisualVM 설정
      • 로그인 사용자 모니터링
      • 하이버네이트 통계 모니터링
      • 스프링 배치 작업 모니터링
    • 스프링 인사이트를 활용한 애플리케이션 모니터링
      • 스프링 인사이트 소개
      • 스프링 인사이트의 설정
      • 스프링 인사이트 활용
    • 정리
    •  
  • ▣ 부록_스프링소스 툴 스위트
    • STS 소개
    • STS 설치
      • STS 단독 실행 버전 설치
      • 기존 이클립스 환경 대상 STS 설치
    • 프로젝트 설정 및 의존성 관리
      • 간단한 스프링 유틸리티 프로젝트의 생성
      • 프로젝트 의존성 관리
    • STS 활용법
      • STS 플러그인 설치
      • STS에서의 VMware tc 서버 설정
    • 정리
  • 171쪽, 예제 5-20, digest() 메서드

    private void digest(String msg, MessageDigest digest) {
        System.out.println("Using alogrithm: " + digest.getAlgorithm());
        ...
    }
    

    ==>

    private void digest(String msg, MessageDigest digest) {
        System.out.println("Using algorithm: " + digest.getAlgorithm());
        ...
    }
    
  • 172쪽, 마지막 출력 결과

    ...
    Using alogrithm: SHA1
    ...
    Using alogrithm: MD5
    ...
    

    ==>

    ...
    Using algorithm: SHA1
    ...
    Using algorithm: MD5
    ...
    
  • 178쪽, 표 5-1

    프로퍼티에디터 설명
    InputStreamEditor 리소스의 문자열 표현(예를 들어 file:D:/temp/test.txt or classpath:test.txt를 사용한 파일 리소스)을 입력 스트림 프로퍼티로 변환한다.

    ==>

    프로퍼티에디터 설명
    InputStreamEditor 리소스의 문자열 표현(예를 들어 file:D:/temp/test.txt or classpath:test.txt를 사용한 파일 리소스)을 입력 스트림 타입의 프로퍼티로 변환한다.
  • 178쪽, 표 5-1

    프로퍼티에디터 설명
    Pattern ...

    ==>

    프로퍼티에디터 설명
    PatternEditor ...
  • 424쪽, 예제 9-26에서

    contact = contactDao.findById(1l); -> contact = contactDao.findById(1);

예제코드 관련 GitHub 페이지

도서 소개자료

관련 글


엮인 글

엮인 글 주소: http://wikibook.co.kr/pro-spring-3/trackback/