logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

실전 스프링 부트

실전 스프링 부트

(기본 개념부터 실무 베스트 프랙티스, 그리고 GraalVM, GraphQL, R소켓 등 최신 기술까지)

솜나트 무시브 (지은이), 오명운 (옮긴이)
제이펍
40,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
36,000원 -10% 0원
2,000원
34,000원 >
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 28,000원 -10% 1400원 23,800원 >

책 이미지

실전 스프링 부트
eBook 미리보기

책 정보

· 제목 : 실전 스프링 부트 (기본 개념부터 실무 베스트 프랙티스, 그리고 GraalVM, GraphQL, R소켓 등 최신 기술까지)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 자바
· ISBN : 9791192987354
· 쪽수 : 672쪽
· 출판일 : 2023-09-08

책 소개

초급에서 중급 수준의 독자를 대상으로 스프링 부트의 기본 개념부터 다양한 기능을 효과적으로 사용하는 고급 개념까지 알려주며, 실무에서 겪는 문제의 해법까지 알차게 담았다. 코틀린, GraalVM 스프링 네이티브 이미지 등도 다뤄 최신 기술을 익히고 싶은 개발자에게도 큰 도움을 준다.

목차

옮긴이 머리말 xi
베타리더 후기 xii
추천 서문(조시 롱) xiv
시작하며 xvi
감사의 글 xviii
이 책에 대하여 xx
표지에 대하여 xxiii

PART I
CHAPTER 1 스프링 부트 시작하기 3

1.1 스프링 부트 소개 4
__1.1.1 왜 스프링 부트인가 4
__1.1.2 스프링 부트는 무엇인가 5
__1.1.3 스프링 부트 핵심 기능 6
__1.1.4 스프링 부트 컴포넌트 7
1.2 코드 예제 9
__1.2.1 메이븐 vs. 그레이들 9
__1.2.2 자바 vs. 코틀린 10
__1.2.3 데이터베이스 지원 10
__1.2.4 롬복 10
1.3 스프링 부트 시작하기 11
__1.3.1 첫 번째 스프링 부트 프로젝트 11
__1.3.2 스프링 부트 프로젝트 구조 11
__1.3.3 실행 가능한 JAR 파일 만들기 22
__1.3.4 JAR 파일 구조 23
__1.3.5 스프링 부트 애플리케이션 종료 24
1.4 스프링 부트 기타 개념 25
__1.4.1 스프링 부트 스타트업 이벤트 25
__1.4.2 스프링 부트 애플리케이션 이벤트 감지 26
__1.4.3 커스텀 스프링 부트 스타터 29
__1.4.4 커스텀 자동 구성 29
__1.4.5 실패 분석기 30
__1.4.6 스프링 부트 액추에이터 30
__1.4.7 스프링 부트 개발자 도구 31

PART II
CHAPTER 2 스프링 부트 공통 작업 35

2.1 애플리케이션 설정 관리 35
__2.1.1 SpringApplication 클래스 사용 36
__2.1.2 @PropertySource 사용 37
__2.1.3 환경 설정 파일 40
__2.1.4 운영 체제 환경 변수 47
2.2 @ConfigurationProperties로 커스텀 프로퍼티 만들기 49
__2.2.1 기법: @ConfigurationProperties를 사용한 커스텀 프로퍼티 정의 50
2.3 스프링 부트 애플리케이션 시작 시 코드 실행 56
__2.3.1 기법: 스프링 부트 애플리케이션 시작 시 CommandLineRunner로 코드 실행 57
2.4 스프링 부트 애플리케이션 로깅 커스터마이징 62
__2.4.1 기법: 스프링 부트 애플리케이션의 기본 로깅 이해 및 커스터마이징 62
__2.4.2 기법: 스프링 부트 애플리케이션에서 Log4j2 사용 67
2.5 빈 밸리데이션으로 사용자 입력 데이터 유효성 검증 72
__2.5.1 기법: 빈 밸리데이션 애너테이션을 사용한 비즈니스 엔티티 유효성 검증 72
__2.5.2 기법: 스프링 부트 애플리케이션에서 커스텀 빈 밸리데이션 애너테이션을 사용한
POJO 빈 유효성 검증 76

CHAPTER 3 스프링 데이터를 사용한 데이터베이스 접근 83
3.1 스프링 데이터 소개 83
__3.1.1 왜 스프링 데이터인가? 84
__3.1.2 스프링 데이터 모듈 85
3.2 스프링 부트 애플리케이션 데이터베이스 연동 설정 87
__3.2.1 기법: 스프링 부트 애플리케이션에서 관계형 데이터베이스 연동 설정 88
__3.2.2 기법: 스프링 부트 애플리케이션 몽고DB 설정 93
__3.2.3 기법: 스프링 부트 애플리케이션에서 관계형 데이터베이스 초기화 96
3.3 CrudRepository 인터페이스 이해 101
__3.3.1 기법: 스프링 데이터 JPA를 사용해서 도메인 객체를 관계형 데이터베이스에서 관리
103
__3.3.2 기법: 커스텀 스프링 데이터 리포지터리를 만들어서 관계형 데이터베이스에서 도메인
객체 관리 111
3.4 스프링 데이터를 사용한 데이터 조회 114
__3.4.1 쿼리 메서드 정의 114
__3.4.2 기법: 관계형 데이터베이스에서 스프링 데이터 JPA를 사용한 커스텀 쿼리 메서드 정의
115
__3.4.3 PagingAndSortingRepository를 활용한 페이징 119
__3.4.4 PagingAndSortingRepository 인터페이스로 데이터 페이징 및 정렬 119
__3.4.5 @NamedQuery를 사용하는 쿼리 123
__3.4.6 기법: 관계형 데이터베이스에 저장된 도메인 객체를 NamedQuery로 조회 124
3.5 @Query로 쿼리문 지정 127
__3.5.1 기법: @Query 애너테이션을 사용해서 쿼리를 정의하고 관계형 데이터베이스에 저장
된 도메인 객체 조회 127
3.6 Criteria API 사용 132
__3.6.1 기법: Criteria API를 사용해서 관계형 데이터베이스에 저장된 도메인 객체 관리 132
3.7 스프링 데이터 JPA와 QueryDSL 136
__3.7.1 기법: 관계형 데이터베이스에 저장된 도메인 객체를 QueryDSL로 관리 136
__3.7.2 기법: 프로젝션 142
3.8 도메인 객체 관계 관리 144
__3.8.1 기법: 스프링 데이터 JPA를 사용해서 관계형 데이터베이스에서 다대다 관계 도메인 객
체 관리 145

CHAPTER 4 스프링 자동 구성과 액추에이터 157
4.1 스프링 부트 자동 구성 이해 158
__4.1.1 @Conditional 애너테이션 이해 160
__4.1.2 자동 구성 탐구 163
4.2 스프링 부트 개발자 도구 166
__4.2.1 프로퍼티 기본값 167
__4.2.2 자동 재시작 167
__4.2.3 라이브 리로드 167
4.3 커스텀 실패 분석기 생성 167
__4.3.1 기법: 커스텀 스프링 부트 실패 분석기 생성 168
4.4 스프링 부트 액추에이터 172
__4.4.1 기법: 스프링 부트 액추에이터 설정 173
__4.4.2 스프링 부트 액추에이터 엔드포인트 이해 174
__4.4.3 스프링 부트 액추에이터 엔드포인트 관리 177
__4.4.4 Health 엔드포인트 탐구 179
__4.4.5 커스텀 스프링 부트 HealthIndicator 작성 183
__4.4.6 기법: 커스텀 스프링 부트 액추에이터 HealthIndicator 정의 183
4.5 info 엔드포인트 탐구 186
__4.5.1 기법: 스프링 부트 액추에이터 info 엔드포인트 설정 186
__4.5.2 기법: 애플리케이션 정보를 표시하는 커스텀 InfoContributor 190
4.6 커스텀 스프링 부트 액추에이터 엔드포인트 생성 192
__4.6.1 기법: 커스텀 스프링 부트 액추에이터 생성 193
__4.6.2 스프링 부트 액추에이터 메트릭 200
__4.6.3 커스텀 측정지표 생성 203
__4.6.4 프로메테우스와 그라파나를 사용한 측정지표 대시보드 210

CHAPTER 5 스프링 부트 애플리케이션 보안 223
5.1 스프링 시큐리티 소개 224
5.2 스프링 부트와 스프링 시큐리티 226
__5.2.1 기법: 스프링 부트 애플리케이션에서 스프링 시큐리티 활성화 226
__5.2.2 필터, 필터체인과 스프링 시큐리티 231
__5.2.3 스프링 시큐리티 아키텍처 233
__5.2.4 사용자 인증 236
__5.2.5 스프링 시큐리티 자동 구성 239
5.3 스프링 시큐리티 적용 242
__5.3.1 기법: 스프링 부트 애플리케이션에서 스프링 시큐리티 로그인 페이지 커스터마이징
242
__5.3.2 기법: 인메모리 인증 적용 248
__5.3.3 기법: JDBC 인증 설정 255
__5.3.4 기법: 커스텀 UserDetailsService 적용 259
__5.3.5 기법: LDAP 인증 적용 265
__5.3.6 기법: HTTP 기본 인증 적용 270

CHAPTER 6 스프링 시큐리티 응용 274
6.1 스프링 부트 애플리케이션에 HTTPS 활성화 276
__6.1.1 기법: HTTPS 활성화 276
6.2 스프링 클라우트 볼트를 활용한 비밀 정보 관리 280
__6.2.1 기법: 스프링 부트 애플리케이션에서 볼트를 활용한 비밀 정보 관리 281
6.3 사용자 등록 구현 286
__6.3.1 기법: 스프링 시큐리티를 사용한 사용자 등록 구현 286
6.4 이메일 확인 296
__6.4.1 기법: 사용자 이메일 확인 297
6.5 로그인 시도 횟수 제한 309
__6.5.1 기법: 로그인 시도 횟수 제한 309
6.6 리멤버 미 기능 구현 316
__6.6.1 기법: 스프링 시큐리티를 사용한 리멤버 미 구현 316
6.7 리캡차 구현 320
__6.7.1 기법: 구글 리캡차 적용 321
6.8 구글 오센티케이터 2단계 인증 328
__6.8.1 기법: 2단계 인증 적용 329
6.9 OAuth2 인증 342
__6.9.1 기법: 구글 계정으로 로그인 342
6.10 액추에이터 엔드포인트 보안 353
__6.10.1 기법: 스프링 부트 액추에이터 엔드포인트 보안 354

CHAPTER 7 스프링 부트 RESTful 웹 서비스 개발 357
7.1 스프링 부트 RESTful API 개발 358
__7.1.1 기법: 스프링 부트를 사용한 RESTful API 개발 358
7.2 스프링 부트 RESTful API 예외 처리 368
__7.2.1 기법: RESTful API 예외 처리 368
7.3 RESTful API 테스트 373
__7.3.1 기법: 스프링 부트 애플리케이션에서 RESTful API 테스트 374
7.4 RESTful API 문서화 380
__7.4.1 기법: OpenAPI를 사용한 RESTful API 문서화 380
7.5 RESTful API 버저닝 387
__7.5.1 기법: URI 버저닝 388
__7.5.2 기법: HTTP 요청 파라미터를 사용한 버저닝 392
__7.5.3 기법: 커스텀 HTTP 헤더를 사용한 버저닝 394
__7.5.4 기법: 미디어 타입을 사용한 버저닝 397
7.6 RESTful API 보안 400
__7.6.1 기법: JWT를 사용한 RESTful API 요청 인가 401

PART III
CHAPTER 8 리액티브 스프링 부트 애플리케이션 개발 425

8.1 리액티브 프로그래밍 소개 426
__8.1.1 백프레셔 429
__8.1.2 리액티브 프로그래밍의 장점 430
8.2 프로젝트 리액터 431
8.3 스프링 웹플럭스 소개 435
__8.3.1 기법: 애너테이션 컨트롤러 기반의 리액티브 RESTful API 개발 436
__8.3.2 기법: 함수형 엔드포인트를 사용하는 리액티브 RESTful API 개발 445
8.4 리액티브 애플리케이션 테스트 451
__8.4.1 기법: WebClient로 API 클라이언트 작성 452
8.5 알소켓 소개 459
__8.5.1 기법: 알소켓과 스프링 부트를 활용한 애플리케이션 개발 460
8.6 웹소켓 소개 471
__8.6.1 기법: 웹소켓을 사용하는 스프링 부트 애플리케이션 개발 473

PART IV
CHAPTER 9 스프링 부트 애플리케이션 배포 483

9.1 실행 가능한 JAR 파일로 스프링 부트 애플리케이션 실행 485
__9.1.1 기법: 실행 가능한 JAR 파일로 패키징하고 실행 485
9.2 스프링 부트 애플리케이션을 WAR 패키지로 만들어 배포 491
__9.2.1 기법: 스프링 부트 애플리케이션을 WAR 파일로 패키징하고 WildFly 애플리케이션 서
버에 배포 492
9.3 클라우드 파운드리에 스프링 부트 애플리케이션 배포 502
__9.3.1 기법: 클라우드 파운드리에 스프링 부트 애플리케이션 배포 504
9.4 허로쿠에 스프링 부트 애플리케이션 배포 507
__9.4.1 기법: 허로쿠에 스프링 부트 애플리케이션 배포 508
9.5 도커 컨테이너로 스프링 부트 애플리케이션 배포 511
__9.5.1 기법: 컨테이너 이미지 생성과 스프링 부트 애플리케이션을 컨테이너로 만들어 실행하
기 513
9.6 쿠버네티스 클러스터에 스프링 부트 애플리케이션 배포 519
__9.6.1 기법: 쿠버네티스에 스프링 부트 애플리케이션 배포 519
9.7 레드햇 오픈시프트에 스프링 부트 애플리케이션 배포 525
__9.7.1 기법: 레드햇 오픈시프트 플랫폼에 스프링 부트 애플리케이션 배포 525

PART V
CHAPTER 10 스프링 부트와 코틀린, 네이티브 이미지, GraphQL 531

10.1 스프링 부트와 코틀린 532
__10.1.1 기법: 코틀린으로 스프링 부트 애플리케이션 개발 533
__10.1.2 기법: 스프링 부트 코틀린 애플리케이션에 스프링 시큐리티 적용 540
10.2 스프링 네이티브 544
__10.2.1 GraalVM 545
__10.2.2 GraalVM 네이티브 이미지 546
__10.2.3 스프링 부트 네이티브 이미지 547
__10.2.4 기법: 빌드팩으로 스프링 부트 네이티브 이미지 생성 547
__10.2.5 기법: 메이븐 플러그인으로 스프링 부트 네이티브 이미지 생성 553
__10.2.6 스프링 AOT 메이븐 플러그인 555
10.3 스프링 부트와 GraphQL 557
__10.3.1 REST의 문제 557
__10.3.2 GraphQL 소개 558
__10.3.3 스프링 부트에서 GraphQL 사용 560
__10.3.4 기법: 스프링 부트 애플리케이션에서 GraphQL API 개발 560
__10.3.5 기법: 웹소켓을 사용하는 스프링 부트 GraphQL API 개발 577

APPENDIX A 스프링 이니셜라이저와 스프링 부트 CLI 583
A.1 스프링 이니셜라이저로 스프링 부트 애플리케이션 생성 583
__A.1.1 스프링 이니셜라이저 소개 583
__A.1.2 기법: 스프링 이니셜라이저 웹으로 스프링 부트 애플리케이션 생성 584
__A.1.3 기법: 인텔리제이에서 스프링 이니셜라이저로 스프링 부트 프로젝트 생성 589
__A.1.4 기법: 스프링 툴 스위트에서 스프링 이니셜라이저로 스프링 부트 프로젝트 생성 592
__A.1.5 기법: 비주얼 스튜디오 코드에서 스프링 이니셜라이저로 스프링 부트 프로젝트 생성
594
__A.1.6 기법: 터미널에서 스프링 이니셜라이저로 스프링 부트 프로젝트 생성 598
A.2 스프링 부트 CLI를 사용한 스프링 부트 애플리케이션 개발 600
__A.2.1 스프링 부트 CLI 소개 600
__A.2.2 설치 601
__A.2.3 스프링 부트 프로젝트 생성 602 / A.2.4 간단한 스프링 부트 프로젝트 개발 602

APPENDIX B 스프링 MVC와 타임리프 템플릿 엔진 605
B.1 스프링 MVC 복습 605
__B.1.1 프런트 컨트롤러 디자인 패턴 606 __B.1.2 요청 처리 과정 이해 607
B.2 타임리프 템플릿 엔진 609
__B.2.1 속성 표시 610
__B.2.2 조건 평가 612
__B.2.3 폼 관리 613
B.3 스프링 부트에서 템플릿 엔진 활성화 616
__B.3.1 기법: 타임리프를 사용해서 스프링 부트 웹 애플리케이션 개발 618

찾아보기 637

저자소개

솜나트 무시브 (지은이)    정보 더보기
10년 이상의 개발 경험을 갖고 있으며 여러 언어를 다룰 수 있는 폴리글랏(polyglot) 개발자. 2015년부터 스프링 부트를 사용하기 시작했으며 스프링 부트 애플리케이션 개발에 열성적으로 참여하고 있다. 가르치는 것을 매우 좋아하며 복잡한 내용을 쉽게 설명할 때 기쁨을 느낀다. 여가 시간에는 미디엄(https://musibs.medium.com/)에 기술 관련 글을 작성해서 공유한다.
펼치기
오명운 (옮긴이)    정보 더보기
번역을 통해 개발자 생태계에 조금이라도 보탬이 되고자 인공지능과 무모한 경쟁을 벌이고 있는 인간지능 번역자. 『실전 스프링 부트』(제이펍, 2023), 『스프링 부트 실전 활용 마스터』(책만, 2021), 『엔터프라이즈 데이터 플랫폼 구축』(책만, 2020) 등을 번역했으며, 적은 양이라도 꾸준히 번역 작업을 이어갈 생각이다. https://github.com/HomoEfficio/dev-tips에 잡다한 문제 해결 기록을 남기고 있으며, 현재 네이버제트에서 글로벌 메타버스 서비스 제페토(Zepeto)를 만들고 있다.
펼치기

책속에서

복잡한 과정 대신에 애플리케이션에 비즈니스 로직을 작성하고, 실행 가능한 파일로 만들어서 커맨드라인으로 바로 실행할 수 있으면 어떨까? 이렇게 하면 복잡한 XML 설정이나 애플리케이션 서버 배포 과정, 기타 기술적인 조작이 필요 없어진다. 기존에 수행해야 했던 복잡한 과정에 필요한 모든 퍼즐 조각을 경험 많은 마술사가 신비롭게도 모두 알아서 맞춰준다.


스프링 데이터의 핵심 목표는 여러 데이터 소스의 데이터를 다룰 때 일관성 있는 프로그래밍 모델을 제공하는 것이다. 그래서 데이터 소스에 저장해야 하는 도메인 객체의 메타데이터를 편리하게 지정할 수 있는 API를 제공하여 비즈니스 도메인 객체가 특정 데이터 스토어에 저장될 수 있도록 한다. 또 관계형 데이터베이스와 스프링 데이터 JPA를 사용해서 비즈니스 객체를 관리할 수 있다. JPA 애너테이션을 지정하면 스프링 데이터 JPA는 관계형 데이터베이스의 테이블에 도메인 객체를 저장한다. 3장에서 비즈니스 객체에 사용하는 여러 JPA 애너테이션을 살펴볼 것이다.


이렇게 이벤트를 사용하지 않고 그냥 RegistrationController에서 이메일을 보내는 것도 물론 가능하다. 하지만 이벤트를 사용하면 사용자 등록이라는 프로세스와 이메일 발송이라는 행위를 결합하지 않고 분리할 수 있다는 장점이 있다. 이처럼 이벤트 발생을 관찰하거나 듣고 있다가 발생 시 특정 작업을 수행하도록 설계하는 디자인 패턴을 옵서버(observer) 패턴이라고 한다. 옵서버 패턴은 특히 분산 마이크로서비스 환경에서 결합도를 낮추는 데 중요한 역할을 한다.


이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책
9791192987835