본문 바로가기

도서 소개

실전 스프링 부트

인류에겐 이런 스프링 부트 가이드북이 필요했다

 

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

 

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

전자책 구매 사이트(가나다순)

  [교보문고]  [구글북스]  [리디북스]  [알라딘]  [예스이십사]

 

출판사 제이펍
저작권사 Manning
원서명 Spring Boot in Practice (9781617298813)
도서명 실전 스프링 부트
부제 기본 개념부터 실무 베스트 프랙티스, 그리고 GraalVM, GraphQL, R소켓 등 최신 기술까지
지은이 솜나트 무시브
옮긴이 오명운
감수자 (없음)
시리즈 (없음)
출판일 2023. 09. 08
페이지 672쪽
판 형 46배판변형(188*245*31.5)
제 본 무선(soft cover)
정 가 40,000원
ISBN 979-11-92987-35-4 (93000)
키워드 스프링시큐리티, 마이크로서비스, 웹소켓, R소켓, 코틀린, GraalVM, GraphQL, 해시코프볼트, 다중인증, 네이티브이미지
분 야 웹 프로그래밍 / 자바 프레임워크

 


관련 사이트
아마존 도서 페이지
저작권사 도서 페이지

 

관련 시리즈

■ (없음)

 

관련 포스트

■ 2023.08.29 - [출간 전 책 소식] - 그런 날 있잖아 스프링 부트를 배우고는 있지만 무작정 실전에서 써보고 싶은... 그런 날

 

관련 도서

■ (없음)

 

관련 파일 다운로드

https://github.com/spring-boot-in-practice/repo

 

강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

미리보기(차례, 옮긴이 머리말, 베타리더 후기, 추천 서문(조시 롱), 이 책에 대하여, 1장 일부, 2장 일부)

 

정오표 페이지
https://jpub.tistory.com/1468

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

전자책 구매 사이트(가나다순)

  [교보문고]  [구글북스]  [리디북스]  [알라딘]  [예스이십사]

 

도서 소개

스프링 부트에서 자주 겪는 개발 문제를 요구 사항/해법/토론 형식으로 풀어낸 실용적인 레시피

 

IT 업계에서 마이크로서비스 기반 아키텍처가 널리 사용됨에 따라 스프링 부트의 인기는 하늘을 찌르고 있으며 스프링 부트는 개발자들 사이에서 가장 배우고 싶은 자바 프레임워크로 자리매김하고 있다. 엄청난 인기에도 스프링 부트의 공식 문서는 너무나 방대하고 바로 사용할 수 있는 예제는 턱없이 부족하여 초중급 사용자에게 적합하지 않다.

 

이 책은 스프링 부트의 명확한 그림을 보여주고 내부 개념을 알기 쉽게 설명한다. 또한 교과서 스타일의 이론적인 예제가 아니라 실무에서 사용할 수 있는 예제를 제공한다. 1부에서는 스프링 부트를 개괄적으로 살펴보고 주요 특징과 다양한 기능을 살펴본다. 2부는 데이터베이스 연동, 자동 구성과 액추에이터, 스프링 시큐리티, 고급 보안 기법, RESTful API 개발 방법 등 스프링 부트 애플리케이션 개발에 필요한 개념과 기법을 알아본다. 3부는 웹소켓, R소켓을 사용해서 스프링 부트 리액티브 애플리케이션을 만들어본다.

 

4부는 JAR이나 WAR 패키지를 통해 스프링 부트 애플리케이션을 배포하는 방법과 클라우드 파운드리와 허로쿠에 배포하는 방법을 알아보고, 스프링 부트 애플리케이션을 컨테이너로 만들어서 쿠버네티스 클러스터와 레드햇 오픈시프트에 배포해본다. 5부는 코틀린을 사용해서 스프링 부트 애플리케이션을 개발하고, 스프링 네이티브를 사용해 GraalVM 네이티브 이미지를 만들어보며, GraphQL을 사용하는 방법도 알아본다. 부록에서는 스프링 이니셜라이저로 스프링 부트 애플리케이션을 생성하는 방법, 스프링 부트 CLI를 사용하는 방법, 스프링 MVC, 타임리프 템플릿 엔진 사용법을 알아본다.

 

프로메테우스, 그라파나 설치 등 원서 설명이 부족한 부분은 한국 독자를 위해 옮긴이가 그림과 설명을 추가해 완성도를 더욱 높였다. 최신 내용으로 가득 찬 이 책은 스프링 부트 개발자들에게 올바른 방향을 알려주는 최고의 가이드다. 개발 문제를 해결하고 최신 기술을 익히고 싶은 실무자에게 도움이 되는 것은 물론, 스프링 부트 기본 개념과 핵심 기능들도 다루기 때문에 초보자도 순서대로 정독하기만 한다면 스프링 부트로 애플리케이션을 구축할 수 있다.

 

주요 내용

  • 전문가의 관점에서 바라본 스프링 부트의 다양한 기능
  • 스프링 부트 애플리케이션 설정 관리, 로깅, 데이터 검증
  • 스프링 시큐리티 활용 및 실제 서비스 환경에 적용하는 고급 보안 기법
  • 스프링 부트로 마이크로서비스 및 RESTful API 개발하기
  • 마이크로서비스 문서화, 버저닝, 보안성 향상 기법
  • 웹소켓, R소켓을 사용한 리액티브 애플리케이션 개발
  • 쿠버네티스 및 주요 클라우드 플랫폼에 스프링 부트 애플리케이션 배포
  • 스프링 부트 애플리케이션에서 컨테이너화 구현하기
  • 스프링 부트에 코틀린, GraalVM 네이티브 이미지, GraphQL 통합하기

지은이 소개

솜나트 무시브(Somnath Musib)

10년 이상의 개발 경험을 갖고 있으며 여러 언어를 다룰 수 있는 폴리글랏(polyglot) 개발자. 2015년부터 스프링 부트를 사용하기 시작했으며 스프링 부트 애플리케이션 개발에 열성적으로 참여하고 있다. 가르치는 것을 매우 좋아하며 복잡한 내용을 쉽게 설명할 때 기쁨을 느낀다. 여가 시간에는 미디엄(https://musibs.medium.com/)에 기술 관련 글을 작성해서 공유한다.

 

옮긴이 소개

오명운

언제나 버그와 씨름하는 개발자. 번역을 통해 개발자 생태계에 조금이라도 보탬이 되고자 노력한다. 《스프링 5.0 마이크로서비스 2/e》(에이콘출판사, 2018), 《클라우드 네이티브 자바》(책만, 2018), 《엔터프라이즈 데이터 플랫폼 구축》(책만, 2020), 《스프링 부트 실전 활용 마스터》(책만, 2021) 등을 번역했으며, 적은 양이라도 앞으로 꾸준히 번역 작업을 이어갈 생각이다. 깃허브에서 개발 관련 지식을 정리해서 나누고 있고, 특히 문제 해결 기록을 https://github.com/HomoEfficio/dev-tips에 남기면서 기억력 감퇴를 기록력 증진으로 메꾸고 있다. 현재 네이버제트에서 글로벌 메타버스 서비스인 제페토(Zepeto)를 만들며 백발 개발자의 꿈을 이어가고 있다.

 

차례

옮긴이 머리말 xi

베타리더 후기 xii

추천 서문(조시 롱) xiv

시작하며 xvi

감사의 글 xviii

이 책에 대하여 xx

 

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

 

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

  포스트  유튜브  인스타그램  트위터  페이스북