목차
옮긴이 머리말 = xiv
머리말 = xvi
감사의 글 = xviii
이 책에 대하여 = xix
베타리더 후기 = xxiv
PART 1 코어 스프링
CHAPTER 1 스프링 속으로 = 3
1.1 자바 개발 간소화 = 4
1.1.1 POJO의 힘 = 5
1.1.2 종속객체 주입 = 6
1.1.3 애스펙트 적용 = 13
1.1.4 템플릿을 이용한 상투적인 코드 제거 = 18
1.2 빈을 담는 그릇, 컨테이너 = 21
1.2.1 또 하나의 컨테이너, 애플리케이션 컨텍스트 = 22
1.2.2 빈의 일생 = 24
1.3 스프링 현황 = 25
1.3.1 스프링 모듈 = 26
1.3.2 스프링 포트폴리오 = 29
1.4 스프링의 새로운 기능 = 33
1.4.1 스프링 3.1에서 새로워진 기능 = 33
1.4.2 스프링 3.2에서 새로워진 기능 = 34
1.4.3 스프링 4.0에서 새로워진 기능 = 36
1.5 요약 = 37
CHAPTER 2 빈 와이어링(묶기) = 39
2.1 스프링 설정 옵션 알아보기 = 40
2.2 자동으로 빈 와이어링하기 = 41
2.2.1 발견 가능한 빈 만들기 = 42
2.2.2 컴포넌트 스캔된 빈 명명하기 = 46
2.2.3 컴포넌트 스캐닝을 위한 베이스 패키지 세팅 = 47
2.2.4 오토와이어링되는 빈의 애너테이션 = 48
2.2.5 자동 설정 검증하기 = 51
2.3 자바로 빈 와이어링하기 = 52
2.3.1 설정 클래스 만들기 = 53
2.3.2 간단한 빈 선언하기 = 53
2.3.3 JavaConfig 주입하기 = 55
2.4 빈을 XML로 와이어링하기 = 57
2.4.1 XML 설정 스펙 만들기 = 57
2.4.2 간단한 빈 선언 = 58
2.4.3 생성자 주입을 사용하여 빈 초기화하기 = 60
2.4.4 프로퍼티 세팅 = 67
2.5 설정 가져오기와 믹싱하기 = 73
2.5.1 JavaConfig로 XML 설정 참조하기 = 73
2.5.2 XML 설정에서 JavaConfig 참조하기 = 75
2.6 요약 = 77
CHAPTER 3 고급 와이어링 = 79
3.1 환경과 프로파일 = 79
3.1.1 빈 프로파일 설정하기 = 81
3.1.2 프로파일 활성화하기 = 86
3.2 조건부 빈 = 88
3.3 오토와이어링의 모호성 = 92
3.3.1 기본 빈 지정 = 94
3.3.2 오토와이어링 빈의 자격 = 95
3.4 빈 범위 = 100
3.4.1 요청과 세션 범위 작업하기 = 101
3.4.2 XML로 범위 프록시 선언하기 = 103
3.5 런타임 값 주입 = 104
3.5.1 외부 값 주입 = 105
3.5.2 스프링 표현식 와이어링 = 110
3.6 요약 = 118
CHAPTER 4 애스펙트 지향 스프링 = 121
4.1 AOP란 무엇인가? = 123
4.1.1 AOP 용어 정의 = 124
4.1.2 스프링의 AOP 지원 = 127
4.2 포인트커트를 이용한 조인 포인트 선택 = 129
4.2.1 포인트커트 작성 = 130
4.2.2 포인트커트에서 빈 선택하기 = 132
4.3 애스펙트 애너테이션 만들기 = 132
4.3.1 애스펙트 정의하기 = 133
4.3.2 around 어드바이스 만들기 = 138
4.3.3 어드바이스에서 파라미터 처리하기 = 139
4.3.4 인트로덕션 애너테이션 = 143
4.4 XML에서 애스펙트 선언하기 = 145
4.4.1 before 어드바이스와 after 어드바이스 선언하기 = 147
4.4.2 around 어드바이스 선언 = 150
4.4.3 어드바이스에 파라미터 전달 = 151
4.4.4 에스펙트를 이용한 새로운 기능 도입 = 153
4.5 AspectJ 애스펙트 주입 = 155
4.6 요약 = 158
PART 2 웹에서의 스프링
CHAPTER 5 스프링 웹 애플리케이션 만들기 = 161
5.1 스프링 MVC 시작하기 = 162
5.1.1 스프링 MVC를 이용한 요청 추적 = 162
5.1.2 스프링 MVC 설정하기 = 164
5.1.3 Spittr 애플리케이션 소개 = 170
5.2 간단한 컨트롤러 작성하기 = 170
5.2.1 컨트롤러 테스팅 = 173
5.2.2 클래스 레벨 요청 처리 정의하기 = 174
5.2.3 뷰에 모델 데이터 전달하기 = 176
5.3 요청 입력받기 = 182
5.3.1 쿼리 파라미터 입력받기 = 183
5.3.2 패스 파라미터를 통한 입력받기 = 185
5.4 폼 처리하기 = 188
5.4.1 폼 처리 컨트롤러 작성 = 191
5.4.2 폼 검증하기 = 194
5.5 요약 = 198
CHAPTER 6 웹 뷰 렌더링 = 199
6.1 뷰 리졸루션 이해하기 = 199
6.2 JSP 뷰 만들기 = 202
6.2.1 JSP-ready 뷰 리졸버 설정하기 = 203
6.2.2 스프링의 JSP 라이브러리 사용하기 = 205
6.3 아파치 타일즈 뷰로 레이아웃 정의하기 = 221
6.3.1 타일 뷰 리졸버 설정하기 = 222
6.4 Thymeleaf로 작업하기 = 228
6.4.1 Thymeleaf 뷰 리졸버 정의하기 = 228
6.4.2 Thymeleaf 템플릿 정의하기 = 230
6.5 요약 = 235
CHAPTER 7 고급 스프링 MVC = 237
7.1 다양한 스프링 MVC 설정 = 238
7.1.1 DispatcherServlet 설정 사용자 정의하기 = 238
7.1.2 서블릿과 필터 추가하기 = 239
7.1.3 web.xml에서 DispatcherServlet 선언하기 = 241
7.2 멀티파트 폼 데이터 처리하기 = 244
7.2.1 멀티파트 리졸버 설정하기 = 246
7.2.2 멀티파트 요청 처리하기 = 250
7.3 예외 처리하기 = 255
7.3.1 예외를 HTTP 상태 코드에 매핑하기 = 255
7.3.2 예외-처리 메소드 작성하기 = 257
7.4 어드바이징 컨트롤러 = 259
7.5 리다이렉션되는 요청 간의 데이터 전달하기 = 261
7.5.1 URL 템플릿과 함께 리다이렉션하기 = 262
7.5.2 플래시 애트리뷰트로 작업하기 = 263
7.6 요약 = 265
CHAPTER 8 스프링 웹 플로로 작업하기 = 267
8.1 스프링에 웹 플로 설정하기 = 268
8.1.1 플로 실행기 연결하기 = 269
8.1.2 플로 설정하기 = 269
8.1.3 플로 요청 처리하기 = 270
8.2 플로의 컴포넌트 = 271
8.2.1 상태 = 272
8.2.2 전이 = 275
8.2.3 플로 데이터 = 277
8.3 모든 것을 합쳐 보기 : 피자 플로 = 279
8.3.1 기본 플로 정의하기 = 279
8.3.2 고객 정보 수집하기 = 283
8.3.3 주문 만들기 = 290
8.3.4 결제 처리하기 = 293
8.4 웹 플로 보안 = 295
8.5 요약 = 295
CHAPTER 9 웹 애플리케이션 보안 = 297
9.1 스프링 시큐리티 시작하기 = 298
9.1.1 스프링 시큐리티 모듈의 이해 = 299
9.1.2 웹 요청 필터하기 = 300
9.1.3 간단한 보안 설정 작성하기 = 301
9.2 사용자 상세 서비스 선택 = 304
9.2.1 인메모리 사용자 저장소로 작업하기 = 305
9.2.2 데이터베이스 테이블로 인증하기 = 307
9.2.3 LDAP 기반 인증 적용하기 = 310
9.2.4 사용자 정의 사용자 서비스 설정하기 = 314
9.3 요청 가로채기 = 316
9.3.1 스프링 표현식 보안 = 319
9.3.2 채널 보안 적용하기 = 321
9.3.3 사이트 간 요청 위조 방지하기 = 322
9.4 사용자 인증하기 = 324
9.4.1 사용자 정의 로그인 페이지 추가하기 = 325
9.4.2 HTTP 기본 인증 활성화하기 = 326
9.4.3 기억하기 기능 활성화 = 327
9.4.4 로그아웃하기 = 329
9.5 뷰 보안하기 = 330
9.5.1 스프링 시큐리티 JSP 태그 라이브러리 사용하기 = 330
9.5.2 Thymeleaf의 스프링 시큐리티 언어로 작업하기 = 334
9.6 요약 = 336
PART 3 백엔드에서의 스프링
CHAPTER 10 스프링과 JDBC를 사용하여 데이터베이스 사용하기 = 339
10.1 스프링의 데이터 액세스 철학 = 340
10.1.1 스프링의 데이터 액세스 예외 계층 구조 = 341
10.1.2 데이터 액세스 템플릿화 = 346
10.2 데이터 소스 설정 = 348
10.2.1 JNDI 데이터 소스 이용 = 349
10.2.2 풀링 기능이 있는 데이터 소스 사용하기 = 350
10.2.3 JDBC 드라이버 기반 데이터 소스 = 351
10.2.4 임베디드 데이터 소스 사용하기 = 353
10.2.5 데이터 소스 선택을 위한 프로파일링하기 = 354
10.3 스프링과 JDBC = 357
10.3.1 지저분한 JDBC 코드 해결 = 357
10.3.2 JDBC 템플릿과 놀아 보자 = 361
10.4 요약 = 367
CHAPTER 11 객체 관계형 매핑을 통한 데이터 퍼시스팅 = 369
11.1 스프링과 하이버네이트 통합 = 371
11.1.1 하이버네이트 세션 팩토리 선언 = 371
11.1.2 스프링으로부터 해방된 하이버네이트 구성 = 374
11.2 스프링과 자바 퍼시스턴스 API = 376
11.2.1 엔티티 관리자 팩토리 설정 = 376
11.2.2 JPA 기반 저장소 작성 = 383
11.3 스프링 데이터를 사용한 자동 JPA 저장소 = 386
11.3.1 쿼리 메소드 정의하기 = 388
11.3.2 맞춤형 쿼리 선언하기 = 392
11.3.3 맞춤형 기능 혼합 = 394
11.4 요약 = 396
CHAPTER 12 NoSQL 데이터베이스 사용하기 = 397
12.1 MongoDB의 유지성 도큐먼트 = 398
12.1.1 MongoDB 활성화 = 399
12.1.2 MongoDB 퍼시스턴트를 위한 애너테이션 모델 타입 = 403
12.1.3 MongoTemplate을 사용하여 MongoDB 액세스하기 = 407
12.1.4 MongoDB 저장소 작성하기 = 408
12.2 Neo4j로 그래프 데이터 사용하기 = 414
12.2.1 스프링 데이터 Neo4j 설정하기 = 415
12.2.2 그래프 엔티티 애너테이션하기 = 418
12.2.3 Neo4jTemplate 사용하기 = 422
12.2.4 자동 Neo4j 저장소 만들기 = 424
12.3 Redis에서 키-값 데이터 사용하기 = 429
12.3.1 Redis에 연결하기 = 430
12.3.2 RedisTemplate을 가지고 작업하기 = 431
12.3.3 키와 값의 직렬 변환 설정 = 436
12.4 요약 = 437
CHAPTER 13 데이터 캐싱하기 = 439
13.1 캐시 지원하기 = 440
13.1.1 캐시 매니저 설정하기 = 442
13.2 캐싱을 위한 애너테이션 메소드 = 446
13.2.1 캐시 채우기 = 447
13.2.2 캐시 엔트리 삭제하기 = 452
13.3 XML에서 캐싱 선언하기 = 453
13.4 요약 = 457
CHAPTER 14 시큐리티 메소드 = 459
14.1 애너테이션을 사용한 시큐어 메소드 = 460
14.1.1 @Secure를 이용한 메소드 보안 = 460
14.1.2 JSR-250의 @RolesAllowed 사용 = 462
14.2 메소드 레벨 시큐리티를 위한 표현식 사용하기 = 463
14.2.1 메소드 액세스 규칙 표현하기 = 464
14.2.2 필터링 메소드의 입출력 = 467
14.3 요약 = 472
PART 4 스프링 통합
CHAPTER 15 원격 서비스 사용하기 = 477
15.1 스프링 리모팅 개요 = 478
15.2 RMI 활용 = 481
15.2.1 RMI 서비스 익스포트 = 481
15.2.2 RMI 서비스 와이어링 = 484
15.3 Hessian과 Burlap을 이용한 리모트 서비스 노출 = 487
15.3.1 Hessian과 Burlap을 이용한 빈 기능 노출 = 488
15.3.2 Hessian/Burlap 서비스에 액세스하기 = 492
15.4 스프링의 HttpInvoker 사용하기 = 494
15.4.1 빈을 HTTP 서비스로 익스포트하기 = 494
15.4.2 HTTP를 거쳐 서비스에 액세스하기 = 496
15.5 웹 서비스의 발행과 소비 = 497
15.5.1 스프링을 사용할 수 있는 JAX-WS 엔드포인트 생성 = 498
15.5.2 클라이언트 측에서 JAX-WS 서비스 프록시하기 = 502
15.6 요약 = 504
CHAPTER 16 스프링 MVC로 REST API 사용하기 = 505
16.1 휴식(REST)을 취하다 = 506
16.1.1 REST의 기본 개념 = 506
16.1.2 스프링이 REST를 지원하는 방법 = 508
16.2 첫 번째 REST 엔드포인트 만들기 = 508
16.2.1 리소스 표현 협상 = 511
16.2.2 HTTP 메시지 변환기 사용 = 518
16.3 더 많은 리소스 사용하기 = 524
16.3.1 클라이언트와 에러 처리하기 = 524
16.3.2 응답 시의 헤더 설정하기 = 530
16.4 REST 리소스 사용하기 = 533
16.4.1 RestTemplate 동작 살펴보기 = 534
16.4.2 리소스 GET하기 = 535
16.4.3 리소스 조회 = 536
16.4.4 응답 메타데이터 추출 = 537
16.4.5 리소스 PUT하기 = 539
16.4.6 리소스 DELETE하기 = 540
16.4.7 리소스 데이터 POST하기 = 541
16.4.8 POST 요청으로부터 객체 응답 수신하기 = 542
16.4.9 POST 요청 후 리소스 위치 수신하기 = 543
16.4.10 리소스 교환 = 544
16.5 요약 = 547
CHAPTER 17 스프링 메시징 = 549
17.1 비동기 메시징에 대한 간단한 소개 = 550
17.1.1 메시지 보내기 = 551
17.1.2 비동기 메시징의 장점 = 554
17.2 JMS로 메시지 보내기 = 556
17.2.1 스프링에서 메시지 브로커 셋업하기 = 557
17.2.2 스프링의 JMS 템플릿 사용 = 559
17.2.3 메시지 드리븐 POJO 작성 = 569
17.2.4 메시지 기반의 RPC 활용 = 573
17.3 AMQP를 이용한 메시징 = 576
17.3.1 AMQP에 대한 간략한 소개 = 577
17.3.2 AMQP 메시징을 위한 스프링 설정하기 = 579
17.3.3 RabbitTemplate으로 메시지 전송하기 = 582
17.3.4 AMQP 메시지 수신하기 = 584
17.4 요약 = 588
CHAPTER 18 WebSocket과 STOMP를 사용하여 메시징하기 = 589
18.1 스프링의 하위 레벨 웹 소켓 API 사용하기 = 590
18.2 웹 소켓 지원 부족에 대해 대응하기 = 596
18.3 STOMP 메시징 작업하기 = 599
18.3.1 STOMP 메시징 사용하기 = 601
18.3.2 클라이언트로부터의 STOMP 메시지 처리 = 604
18.3.3 클라이언트로 메시지 보내기 = 608
18.4 사용자 타깃 메시지 사용하기 = 613
18.4.1 컨트롤러에서 사용자 메시지 사용하기 = 614
18.4.2 특정 사용자에게 메시지 보내기 = 616
18.5 예외 상황 메시지 처리하기 = 617
18.6 요약 = 619
CHAPTER 19 스프링을 사용하여 이메일 전송하기 = 621
19.1 이메일 전송을 위해 스프링 설정하기 = 622
19.1.1 메일 전송자 설정하기 = 622
19.1.2 메일 서버를 와이어링하고 사용하기 = 624
19.2 이메일 메시지를 풍부하게 꾸미기 = 625
19.2.1 첨부파일 추가하기 = 625
19.2.2 리치 콘텐츠를 이용한 이메일 전송 = 627
19.3 템플릿을 사용하여 이메일 생성하기 = 629
19.3.1 Velocity를 사용하여 이메일 메시지를 구성하기 = 629
19.3.2 이메일 메시지를 만들기 위해서 Thymeleaf 사용하기 = 632
19.4 요약 = 634
CHAPTER 20 JMX를 이용한 스프링 빈 관리 = 635
20.1 스프링 빈을 MBean으로 익스포트하기 = 636
20.1.1 이름으로 메소드 노출시키기 = 639
20.1.2 인터페이스를 이용한 MBean 오퍼레이션과 애트리뷰트 정의 = 642
20.1.3 애너테이션 주도의 MBean을 이용한 작업 = 643
20.1.4 MBean 충돌 처리 = 645
20.2 MBean 리모팅 = 646
20.2.1 원격 MBean 노출하기 = 647
20.2.2 원격 MBean에 액세스하기 = 648
20.2.3 MBean 프록시 만들기 = 650
20.3 통지 처리 = 651
20.3.1 통지 듣기 = 653
20.4 요약 = 654
CHAPTER 21 스프링 부트를 사용한 스프링 개발 간소화 = 655
21.1 스프링 부트 소개 = 656
21.1.1 스타터 의존 추가하기 = 657
21.1.2 자동 설정 = 660
21.1.3 스프링 부트 CLI = 660
21.1.4 액추에이터 = 661
21.2 스프링 부트로 애플리케이션 만들기 = 662
21.2.1 요청 처리하기 = 665
21.2.2 뷰 만들기 = 668
21.2.3 정적 아티팩트 추가하기 = 669
21.2.4 데이터 보존하기 = 671
21.2.5 실행하기 = 673
21.3 스프링 부트 CLI로 그루비 사용하기 = 677
21.3.1 그루비 컨트롤러 작성하기 = 678
21.3.2 그루비 저장소로 데이터 보존하기 = 680
21.3.3 스프링 부트 CLI 실행 = 682
21.4 액추에이터로 애플리케이션 파악하기 = 684
21.5 요약 = 688
찾아보기 = 691
닫기