프로 스프링. 3
도서명:프로 스프링. 3
저자/출판사:클라렌스,호,롭,해롭/위키북스
쪽수:1060쪽
출판일:2012-09-28
ISBN:9788998139032
목차
▣ 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 서버 설정
정리