본문 바로가기

출간 도서 소개

17. 코드로 배우는 스프링 부트 웹 프로젝트

저자: 구멍가게 코딩단
출판사: 남가람북스
발행일: 2020-12-25
ISBN: 979-11-89184-07-0
가격: 34000
페이지: 644
판형: 182*232*26

[상세 페이지]

[저자 소개]
지은이: 구멍가게 코딩단

프로그래밍을 좋아하지만 남들 앞에 나설 용기 없는 10년 차 이상 개발자, 현업 관리자, 강사들의 비공개 모임. 어린 시절 구멍가게 앞 아저씨들이 인생의 진리를 가볍게 던졌던 것처럼 프로그래밍의 오의(奧義)를 가볍게 던지고 싶은 사람들의 모임. http://cafe.naver.com/gugucoding 카페에서 독자들과 소통하고 있다. 스프링 외에도 여러 주제에 대한 자료를 제공하며, 저서로는 <코드로 배우는 스프링 웹 프로젝트 [개정판]>, <스타트 스프링 부트> 등이 있음.


[책소개]

‘스프링 프레임워크를 좀 더 간단히 사용할 수는 없을까?’
이 책의 시작은 위의 질문에서 시작합니다. 좀 더 빠르게 개발하면서 스프링 프레임워크의 모든 기능을 활용할 수 있는 스프링 부트는 Intellij나 이클립스, VS Code 등 개발 도구들의 지원 역시 활발합니다. 스프링 부트의 경우 자동 설정 기능을 이용하면 최소한의 설정만으로도 원하는 기능들을 사용할 수 있는 놀라운 개발 생산성을 보여줍니다.
개발에서 가장 중요한 데이터베이스 처리는 과감하게 JPA를 도입해 봅니다. JPA를 이용해서 최소한의 개발을 추구하고 데이터베이스에 독립적으로 실행 가능한 코드를 개발할 수 있습니다. 인터넷의 예제들이 너무 단순한 구조의 예제들만을 다루고 있어서 실제 JPA를 도입하는데 부족하다는 생각에 조인 처리가 많이 필요한 예제들을 구성해 봅니다. JPA가 생성하는 SQL을 로그로 확인해 보면 직접 테이블들을 조인 처리해야 했던 시간을 얼마나 절약할 수 있는지 알 수 있을 것입니다.
인증 처리 역시 구글을 이용하는 소셜 로그인 처리와 더불어 JWT 토큰을 발행하는 방식을 도입합니다. 이를 통해서 전통적인 로그인과 API를 제공할 때 인증 처리를 모두 지원하는 애플리케이션을 구성하는 방법을 알아봅니다. 이 책은 기본적으로 ‘코드로 배우는 스프링 웹 프로젝트 [개정판](남가람북스 2018)’의 내용을 스프링 부트와 JPA, Thymeleaf를 이용하는 구성이므로 스프링 프레임워크에 대한 학습이 필요하다면 참고하시기 바랍니다.

[이 책의 주요 특징]
* 개발 도구를 STS 대신에 Intellij Ultimate를 이용합니다.
* MariaDB를 이용하고, Spring Data JPA로 SQL을 대신합니다.
* JSP 대신에 Thymeleaf를 이용해서 화면을 작성합니다.
* 소셜 로그인을 이용하고 이를 자동 회원가입으로 처리합니다.
* 스프링 시큐리티를 이용해서 일반 로그인과 JWT를 이용한 API 인증처리를 같이 적용합니다.

[이 책의 대상 독자]
이 책은 이론보다는 바로 실행해 볼 수 있는 예제를 만드는데 집중하므로 다음과 같은 지식이 필요합니다.
* Java 언어의 기본적인 문법과 예외 처리, JDBC 관련 기능에 대한 이해가 필요합니다.
* JPA를 다루긴 하지만 실제 실행은 SQL로 처리하므로 이에 대한 지식이 필요합니다.
* MVC 기반의 웹 프로그래밍 경험이 있어야만 합니다.
* 스프링에 대한 기본적인 개념과 이해가 있어야만 합니다.


[출판사 리뷰]

앞으로 모든 스프링 프레임워크의 기능은 스프링 부트 위주로 진행될 것입니다. 이미 개발 도구들 역시 스프링 부트로 스프링 프레임워크를 이용하도록 만들어지고 있고, 클라우드 환경이나 마이크로 서비스 등에서는 스프링 부트가 필수로 자리 잡고 있습니다. 이 책은 기존의 ‘코드로 배우는 스프링 웹 프로젝트[개정판]’의 스프링 부트 버전으로 기획되었습니다.

[이 책의 구성]
* PART 1: 스프링 부트, Thymeleaf, Spring Data JPA 소개
* PART 2: 단일 엔티티를 이용하는 방명록 프로젝트
* PART 3: @ManyToOne 연관관계를 이용하는 게시물과 댓글 프로젝트
* PART 4: 다대다 관계를 이용하는 영화와 회원의 영화 리뷰 프로젝트
* PART 5: 스프링 시큐리티를 이용하는 일반 로그인/소셜 로그인/API 로그인 처리

[이 책의 구성 특징]
<단순한 CRUD가 아닌 현실적인 데이터의 처리 방식 소개>
* 기존의 스프링 부트나 JPA와 관련된 자료가 하나의 테이블로 만들어지는 단순한 예제를 다루는 경우가 많은데 비해 이 책에서는 여러 엔티티를 이용해야 하는 상황들을 고려하였습니다.

<단방향 위주의 연관관계 설정>
* 실제 개발에서 주로 사용하는 단방향 참조 방식으로 예제를 구성하고, JPQL을 적극적으로 활용해서 원하는 데이터를 처리하도록 하였습니다.

<테스트를 중시하는 개발 방식>
* 예제를 위한 더미 데이터의 생성이나 조회 등에 테스트 코드를 반드시 적용하고, 결과를 확인한 상태에서 다음 단계로 진행할 수 있도록 구성하였습니다.

<공통된 구조와 재사용 가능한 클래스>
* DTO와 엔티티 처리 방식이나, 목록 데이터의 처리, 페이지 처리 등은 모두 책이 앞쪽에서 공통 구조를 만들고 모든 예제를 공통된 구조를 이용해서 반복적으로 학습할 수 있도록 구성하였습니다.

[소스 코드 다운로드 및 Q&A, 동영상 강의]
이 책으로 공부하다가 이해하기 어려운 부분이나 궁금한 사항이 생기면 구멍가게 코딩단 카페에서 질문하여 해결하기 바랍니다. 또한, 책에서 부족한 부분을 채워주고 학습 효과를 더 높일 수 있게 필자의 카페에서 동영상 강의를 들으면서 공부할 수 있습니다.
소스 코드 다운로드는 카페 자료실에서 확인할 수 있습니다.

* 카페 주소: http://cafe.naver.com/gugucoding

 

[목 차]

이 책을 내며...
들어가며...

Part 1 스프링 부트 도전하기

01장 프로젝트를 위한 준비
1.1 개발 도구의 준비
1.2 Spring initializr를 이용한 프로젝트 생성
1.3 스프링 프로젝트 실행해 보기
1.4 스프링 부트를 단독으로 실행 가능한 파일로 만들기

02장 Maria 데이터베이스와 Spring Data JPA
2.1 MariaDB의 설치와 데이터베이스 생성
2.2 Spring Data JPA를 이용하는 프로젝트의 생성
2.3 Spring Data JPA의 소개
2.4 엔티티 클래스와 JpaRepository
2.5 페이징/정렬 처리하기
2.6 쿼리 메서드(Query Methods) 기능과 @Query

03장 스프링 MVC와 Thymeleaf
3.1 Thymeleaf를 사용하는 프로젝트 생성
3.2 Thymeleaf의 기본 사용법
3.3 Thymeleaf의 기본 객체와 LocalDateTime
3.4 Thymeleaf의 레이아웃

Part 2 Spring MVC/JPA/Thymeleaf 연습

04장 프로젝트 구조 만들기
4.1 프로젝트의 와이어프레임
4.2 자동으로 처리되는 날짜/시간 설정
4.3 엔티티 클래스와 Querydsl 설정
4.4 서비스 계층과 DTO
4.5 목록 처리
4.6 컨트롤러와 화면에서의 목록 처리
4.7 등록 페이지와 등록 처리
4.8 방명록의 조회 처리
4.9 방명록의 수정/삭제 처리
4.10 검색 처리

Part 3 N:1(다대일 관계) 처리하기

05장 N:1(다대일) 연관관계
5.1 연관관계와 관계형 데이터베이스 설계
5.2 연관관계 테스트
5.3 프로젝트 적용하기
5.4 컨트롤러와 화면 처리
5.5 JPQL로 검색

06장 @RestController와 JSON 처리
6.1 JSON과 Ajax로 댓글 처리
6.2 ReplyDTO와 ReplyService/ReplyController
6.3조회 화면에서 처리

Part 4 M:N(다대다) 관계와 파일 업로드 처리

07장 M:N(다대다) 관계의 설계와 구현
7.1 M:N(다대다) 관계의 특징
7.2 예제 프로젝트 생성
7.3 M:N(다대다) Repository와 테스트

08장 파일 업로드 처리
8.1 파일 업로드를 위한 설정

09장 영화/리뷰 프로젝트 적용하기
9.1 영화(Movie) 등록 처리
9.2 목록 처리와 평균 평점
9.3 조회 페이지와 영화 리뷰
9.4 Ajax로 영화 리뷰 처리

Part 5 Spring Security를 이용한 로그인 처리

10장 Spring Boot와 Spring Security 연동
10.1 스프링 시큐리티를 이용하는 프로젝트 생성
10.2 스프링 시큐리티 커스터마이징
10.3 프로젝트를 위한 JPA 처리
10.4 시큐리티를 위한 UserDetailsService
10.5 Thymeleaf/Controller에서 사용자 정보 출력하기

11장 스프링 시큐리티 소셜 로그인 처리
11.1 구글 로그인 시나리오
11.2 현재 프로젝트와의 연동
11.3 자동 회원 가입의 후처리
11.4 Remember me와 @PreAuthorize

12장 API 서비스 만들기
12.1 API 서버를 위한 구성
12.2 API 서버를 위한 필터
12.3 API를 위한 인증처리

Appendix

A 양방향과 @OneToMany
A.1 데이터베이스 설계와 양방향
A.2 양방향 설정도 시작은 FK로
A.3 양방향 참조는 상위 엔티티를 기준으로

찾아보기