목차
옮긴이 머리말 = 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
닫기