본문으로 바로가기
평면표지(2D 앞표지)

스프링 부트 3 백엔드 개발자 되기(자바 편)

JPA + OAuth2 + JWT + AWS와 배우는 스프링 부트 3 Java 백엔드 입문자를 위한 풀 패키지(연습문제 수록)


  • ISBN-13
    979-11-91905-29-8 (93000)
  • 출판사 / 임프린트
    골든래빗(주) / 골든래빗(주)
  • 정가
    30,000 원 확정정가
  • 발행일
    2023-05-12
  • 출간상태
    출간
  • 저자
    신선영
  • 번역
    -
  • 메인주제어
    웹프로그래밍
  • 추가주제어
    -
  • 키워드
    #웹프로그래밍 #스프링부트 #자바 #스프링부트3 #springboot #OAuth #AWS #JPA #하이버네이트 #스프링
  • 도서유형
    종이책, 무선제본
  • 대상연령
    모든 연령, 성인 일반 단행본
  • 도서상세정보
    183 * 235 mm, 384 Page

책소개

★ 자바 백엔드 개발자가 되고 싶다면
★ 자바 언어 입문 그다음에 꼭 보세요

실력을 갖춘 개발자로 성장하려면 시작이 중요합니다. 그래서 이 책은 무엇부터 익혀야 하는지 막막한 입문자에게 백엔드 개발의 필수 지식을 학습 로드맵 중심으로 설명합니다. 이어서 스프링 부트 3 개발에 꼭 필요한 4대장인 JPA ORM, OAuth2 인증, AWS 배포, CI/CD를 최신 트렌드에 맞게 그리고 실무에 유용하게 알려줍니다. 모든 장 끝에는 연습문제가 수록되어 있어 배운 내용을 점검할 수 있습니다. 이 책이 여러분의 백엔드 개발자 여정에 든든한 나침반이 되어 줄 겁니다.


 

〈되기〉 시리즈 소개

〈되기〉 시리즈는 이름 그대로 IT 분야에서 성장하려는 여러분을 위해 준비한 책입니다. 엄선된 IT 기술들을 로드맵과 함께 제시하고, 실무 중심으로 공부할 수 있도록 안내합니다. 여러분이 해당 분야에서 실무자로 빠르게 성장할 수 있도록 지원하겠습니다.

목차

[레벨 1 | 스프링 부트로 백엔드 입문하기]


 

00장 개발 환경 구축하기  

_0.1 인텔리제이 설치 및 설정  

__0.1.1 윈도우에 인텔리제이 설치하기  

__0.1.2 macOS에 인텔리제이 설치하기  

__0.1.3 프로젝트 생성하기  

_0.2 스프링 부트 3 프로젝트 만들기  

_0.3 포스트맨 설치하기  

_0.4 예제 코드 저장소 위치  

_0.5 개발 편의와 속도를 확 올려줄 꿀 단축키  


 


 

01장 자바 백엔드 개발자가 알아두면 좋은 지식 

_1.1 서버와 클라이언트  

_1.2 데이터베이스  

_1.3 아이피와 포트  

_1.4 라이브러리와 프레임워크  

_1.5 백엔드 개발자의 업무  

_1.6 백엔드 프로그래밍 언어  

_1.7 자바 애너테이션  


 

02장 스프링 부트 3 시작하기 

_2.1 스프링과 스프링 부트 3

__2.1.1 스프링의 등장  

__2.1.2 스프링을 더 쉽게 만들어 주는 스프링 부트  

_2.2 스프링 콘셉트 공부하기  

__2.2.1 제어의 역전과 의존성 주입  

__2.2.2 빈과 스프링 컨테이너  

__2.2.3 관점 지향 프로그래밍  

__2.2.4 이식 가능한 서비스 추상화  

_2.3 스프링 부트 3 둘러보기  

__2.3.1 첫 번째 스프링 부트 3 예제 만들기  

__2.3.2 스프링 부트 스타터 살펴보기  

__2.3.3 자동 구성  

__2.3.4 스프링 부트 3과 자바 버전  

_2.4 스프링 부트 3 코드 이해하기  

__2.4.1 @SpringBootApplication 이해하기  

__2.4.2 테스트 컨트롤러 살펴보기 

_학습 마무리  

_연습문제  


 

03장 스프링 부트 3 구조 이해하기  

_3.1 스프링 부트 3 구조 살펴보기  

__3.1.1 카페와 빵집으로 이해하는 계층  

__3.1.2 스프링 부트 프로젝트 디렉터리 구성하며 살펴보기  

__3.1.3 main 디렉터리 구성하기  

_3.2 스프링 부트 3 프로젝트 발전시키기  

__3.2.1 build.gradle에 의존성 추가하기  

__3.2.2 프레젠테이션, 서비스, 퍼시스턴스 계층 만들기

__3.2.5 임포트 오류 처리하기  

__3.2.6 작동 확인하기  

_3.3 스프링 부트 요청-응답 과정 한 방에 이해하기 

_학습 마무리  

_연습문제  


 

04장 스프링 부트 3와 테스트  

_4.1 테스트 코드 개념 익히기  

__4.1.1 테스트 코드란?  

_4.2 스프링 부트 3와 테스트  

__4.2.1 JUnit이란?  

_4.3 제대로 테스트 코드 작성해 보기  

_학습 마무리  

_연습문제  


 

05장 데이터베이스 조작이 편해지는 ORM 

_5.1 데이터베이스란?  

__5.1.1 데이터베이스 관리자, DBMS 

_5.2 ORM이란?  

_5.3 JPA와 하이버네이트?  

__5.3.1 엔티티 매니저란?  

__5.3.2 영속성 컨텍스트란?  

__5.3.3 엔티티의 상태  

_5.4 스프링 데이터와 스프링 데이터 JPA 

__5.4.1 스프링 데이터 JPA란? 

__5.4.2 스프링 데이터 JPA에서 제공하는 메서드 사용해보기   

_5.5 예제 코드 살펴보기  

_학습 마무리  

_연습문제  


 

[레벨 2 | 스프링 부트 3로 블로그 제대로 만들기]


 

06장 [Project] 블로그 기획하고 API 만들기  

_6.1 사전 지식 : API와 REST API 

__6.1.1 식당으로 알아보는 API 

__6.1.2 웹의 장점을 최대한 활용하는 REST API 

_6.2 블로그 개발을 위한 엔티티 구성하기  

__6.2.1 프로젝트 준비하기  

__6.2.2 엔티티 구성하기  

__6.2.3 리포지토리 만들기  

_6.3 블로그 글 작성을 위한 API 구현하기  

__6.3.1 서비스 메서드 코드 작성하기  

__6.3.2 컨트롤러 메서드 코드 작성하기  

__6.3.3 API 실행 테스트하기  

__6.3.4 반복 작업을 줄여 줄 테스트 코드 작성하기  

_6.4 블로그 글 목록 조회를 위한 API 구현하기 

__6.4.1 서비스 메서드 코드 작성하기  

__6.4.2 컨트롤러 메서드 코드 작성하기  

__6.4.3 실행 테스트하기  

__6.4.4 테스트 코드 작성하기  

_6.5 블로그 글 조회 API 구현하기  

__6.5.1 서비스 메서드 코드 작성하기  

__6.5.2 컨트롤러 메서드 코드 작성하기  

__6.5.3 테스트 코드 작성하기 __

_6.6 블로그 글 삭제 API 구현하기  

__6.6.1 서비스 메서드 코드 작성하기  

__6.6.2 컨트롤러 메서드 코드 작성하기  

__6.6.3 실행 테스트하기  

__6.6.4 테스트 코드 작성하기  

_6.7 블로그 글 수정 API 구현하기  

__6.7.1 서비스 메서드 코드 작성하기  

__6.7.2 컨트롤러 메서드 코드 작성하기  

__6.7.3 실행 테스트하기  

__6.7.4 테스트 코드 작성하기  

_학습 마무리  

_연습문제  


 

07장 [Project] 블로그 화면 구성하기  

_7.1 사전 지식 : 타임리프  

__7.1.1 템플릿 엔진 개념 잡기  

__7.1.2 타임리프 사용을 위한 의존성 추가하기 

__7.1.3 타임리프 문법 익히기용 컨트롤러 작성하기  

__7.1.4 뷰 작성하기  

__7.1.5 뷰 테스트하기  

_7.2 블로그 글 목록 뷰 구현하기  

__7.2.1 컨트롤러 메서드 작성하기  

__7.2.2 HTML 뷰 만들고 테스트하기  

_7.3 블로그 글 뷰 구현하기  

__7.3.1 엔티티에 생성, 수정 시간 추가하기  

__7.3.2 컨트롤러 메서드 작성하기  

__7.3.3 HTML 뷰 만들기  

__7.3.4 실행 테스트하기  

_7.4 삭제 기능 추가하기  

__7.4.1 삭제 기능 코드 작성하기  

__7.4.2 실행 테스트하기  

_7.5 수정/생성 기능 추가하기  

__7.5.1 수정/생성 뷰 컨트롤러 작성하기  

__7.5.2 수정/생성 뷰 만들기  

__7.5.3 실행 테스트하기  

_7.6 생성 기능 마무리하기  

__7.7.1 생성 기능 작성하기  

__7.6.2 실행 테스트하기  

_학습 마무리  

_연습문제  


 

08장 [Project] 스프링 시큐리티로 로그인/로그아웃, 회원 가입 구현하기  

_8.1 사전 지식 : 스프링 시큐리티  

_8.2 회원 도메인 만들기  

__8.2.1 의존성 추가하기  

__8.2.2 엔티티 만들기  

__8.2.3 리포지터리 만들기  

__8.2.4 서비스 메서드 코드 작성하기  

_8.3 시큐리티 설정하기  

_8.4 회원 가입 구현하기  

__8.4.1 서비스 메서드 코드 작성하기  

__8.4.2 컨트롤러 작성하기  

_8.5 회원 가입, 로그인 뷰 작성하기  

__8.5.1 뷰 컨트롤러 구현하기  

__8.5.2 뷰 작성하기  

_8.6 로그아웃 구현하기  

__8.6.1 로그아웃 메서드 추가하기  

__8.6.2 로그아웃 뷰 추가  

_8.7 실행 테스트하기  

__8.7.1 테스트를 위한 환경 변수 추가하기  

__8.7.2 로그인, 회원 가입 실행 테스트하기  

__8.7.3 로그아웃 실행 테스트하기  

_학습 마무리  

_연습문제  


 

09장 [Project] JWT로 로그인/로그아웃 구현하기  

_9.1 사전 지식 : 토큰 기반 인증  

__9.1.1 토큰 기반 인증이란?  

__9.1.2 JWT 

_9.2 JWT 서비스 구현하기  

__9.2.1 의존성 추가하기  

__9.2.2 토큰 제공자 추가하기  

__9.2.3 리프레시 토큰 도메인 구현하기  

__9.2.4 토큰 필터 구현하기  

_9.3 토큰 API 구현하기  

__9.3.1 토큰 서비스 추가하기  

__9.3.2 컨트롤러 추가하기  

_학습 마무리  

_연습문제  


 

10장 [Project] OAuth2로 로그인/로그아웃 구현하기  

_10.1 사전 지식 : OAuth 

__10.1.1 OAuth이란?  

__10.1.2 권한 부여 코드 승인 타입이란?  

__10.1.3 쿠키?  

_10.2 토큰 발급받기  

_10.3 스프링 시큐리티로 OAuth2 구현하고 적용하기  

__10.3.1 의존성 추가하기  

__10.3.2 쿠키 관리 클래스 구현하기  

__10.3.3 OAuth2 서비스 구현하기  

__10.3.4 OAuth2 설정 파일 작성하기  

__10.3.5 글에 글쓴이 추가하기  

__10.3.6 OAuth 뷰 구성하기  

__10.3.7 글 수정, 삭제 본인 확인 로직 추가하기  

_10.4 OAuth2 실행 테스트하기  

_10.5 테스트 코드 실패 해결하고 코드 수정하기  

_학습 마무리  

_연습문제  


 

[레벨 3 | AWS와 깃허브 액션으로 배포/유지보수 편안하게 하기]


 

11장 [Project] AWS에 프로젝트 배포하기  

_11.1 사전 지식 : AWS 

__11.1.1 AWS란? 

__11.1.2 AWS 서비스로 우리의 서비스 배포하기  

__11.1.3 설정이 간편한 일래스틱 빈스토크  

_11.2 AWS 계정 생성하기  

_11.3 일래스틱 빈스토크로 서버 구축하기  

__11.3.1 일래스틱 빈스토크 서비스 생성  

__11.2.2 일래스틱 빈스토크에서 RDS 생성  

__11.2.3 로컬에서 RDS 연결  

_11.4 일래스틱 빈스토크에 우리의 서비스 배포하기 

__11.3.1 애플리케이션 배포하기  

__11.3.2 OAuth 서비스에 승인된 URI 추가  

_학습 마무리  

_연습문제  


 

12장 [Project] CI/CD 도입하기  

_12.1 사전 지식 : CI/CD 

__12.1.1 CI/CD란? 

__12.1.2 깃과 깃허브  

_12.2 깃허브 액션 사용하기  

__12.2.1 깃허브 리포지터리 생성하고 코드 푸시하기  

__12.2.2 깃허브 액션 스크립트 작성하기, CI 

__12.2.3 깃허브 액션 스크립트 작성하기, CD 

_학습 마무리  

_연습문제 


 

부록 A 값 검증 가이드

부록 B 예외 처리 가이드

본문인용

★ 백엔드 세상에 오신 걸 환영합니다
★ 자바 그다음 책을 소개합니다

환영합니다. 백엔드 개발자가 되고 싶은데 무엇을 어떻게 할지 모르겠는 분이라면, 잘 찾아오셨습니다. 이 책은 자바를 공부하고 나서 백엔드 입문에 필요한 내용을 알려줍니다. 입문자뿐만 아니라, 더 깊게 체계적으로 기본을 다지고 싶은 주니어 개발자와, 대규모 서비스 노하우를 담은 수준 높은 코드를 경험하고 싶은 개발자 모두에게 유용합니다. 

4대장과 함께 공부하세요

자바 백엔드 환경의 핵심은 <스프링 부트>입니다. <스프링 부트>는 자바 기반의 프레임워크이므로 자바 언어의 기초 문법부터 클래스, 인터페이스와 같은 기초 지식은 반드시 알고 있어야 하며, 데이터베이스, SQL 관련 지식도 알아야 합니다. 너무 많은 기초 지식을 알아야 할 것 같아서 걱정인가요? 걱정 마세요. 이런 기초 지식들은 책에서 충분히 설명합니다. 이 책에서 <스프링 부트>와 함께 공부할 4대장을 소개합니다.


 

 JPA는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스입니다. 즉, 스프링 부트에서는 SQL이 아닌 자바 언어로 데이터베이스를 조작하죠. JPA는 인터페이스이므로 ORM 프레임워크를 추가로 선택해야 합니다. 실무에서는 대표적으로 하이버네이트를 많이 사용합니다.


 

<인증(ID/PW, OAuth2, JWT)> 블로그의 기초 기능인 쓰기, 수정하기, 조회하기, 삭제하기는 기본이죠. 여기서는 회원 가입부터, 로그인, 로그아웃을 다양한 방법으로 구현합니다. 단순 ID/PW 입력 방식부터 OAuth2를 활용한 구글 로그인, JWT를 활용한 토큰 인증 방식까지! 실무 활용 기법을 모두 다루면서도 점점 기능을 업그레이드하는 과정으로 구성되어 있죠.


 

 개발을 마쳤다면 배포도 해봐야죠. 여기서는 AWS의 일래스틱 빈스토크를 활용하여 블로그를 배포합니다. 여기서는 EC2, 오토 스케일링 그룹, 로드 밸런서, RDS와 같은 AWS의 구성 설명부터 스프링 부트 환경을 제대로 이용해서 AWS에 배포하는 방법을 공부합니다.


 

 CI/CD가 뭐냐고요? 쉽게 말해 개발자가 개발을 마치고, 애플리케이션을 빌드하고, 테스트를 하고, 원격 저장소에 코드를 업데이트하고, 이를 배포하는 등의 전 과정을 자동화하는 과정을 말합니다. 대부분의 실무 환경에서는 CI/CD를 진행하죠. 여기서는 깃허브 액션을 활용하여 CI/CD를 진행해봅니다.

〈되기〉 시리즈는 여러분에게 앞으로 나아갈 길을 먼저 제시합니다
입문자를 위한 백엔드 로드맵을 만나보세요

저자는 백엔드 개발자로 입문할 때 겪은 난감함을 떠올렸습니다. 무엇을 어떻게 할지 몰랐습니다. 로드맵이 필요했습니다. 하지만 누구도 제대로 된 로드맵을 제공해주지 않았습니다. 그래서 저자는 입문자에게 필요한 백엔드 로드맵을 먼저 제시하고 설명합니다. 로드맵에는 수많은 기술이 나열되어 있습니다. 책 한 권에 로드맵에 있는 모든 걸 담을 수도, 한 번에 모두 배울 수도 없습니다. 이 책은 그중에서도 출발점으로 삼을 스프링 부트 3를 중심으로 함께 공부할 로드맵을 제시합니다.

실무에 유용한 기술로 익히세요

기술은 빠르게 변합니다. 지금은 대세이지만 지는 기술, 아직은 미약하지만 뜨는 기술이 있습니다. 트렌드가 변하는 데는 그럴 만한 이유가 있습니다. 반면 기본은 트렌드와 무관하게 변하지 않습니다. 그래서 기본은 탄탄하게, 기술셋은 트렌디하면서 실무에 유용하게 설명했습니다.

경험을 녹인 고퀄리티 코드를 접하세요

인터넷을 검색하면 손쉽게 동작하는 코드를 얻을 수 있습니다. 그렇게 얻은 코드 대부분은 기능이 부족하거나 서비스가 성장하면서 다양한 이슈를 낳게 됩니다. 이 책에 들어 있는 코드는 그런 인터넷 복붙 코드가 아닙니다. 필자가 서비스를 개발하고 운영한 경험을 녹인 코드입니다. 인터넷을 검색하면 블로그 개발을 위한 코드가 많습니다. 하지만 제대로 JWT, OAuth2를 녹여내거나 CI/CD까지 고려한 개발을 잘 엮어준 책은 없습니다. 이 책에서는 제대로 동작하는 블로그 기능부터 JWT, OAuth2를 위한 보안, 향후 실무에서 경험할 CI/CD까지 만나볼 수 있습니다.

이 책에서 다루는 내용을 소개합니다

이 책은 학습 흐름을 끊지 않기 위해 개발 환경부터 미리 구축해놓은 후, 스프링 부트 3를 중심으로 레벨 1부터 레벨 3로 나눠 자바 백엔드 개발 소양을 쌓아 나갑니다. 그리고 모든 장에는 연습 문제를 수록하여 공부한 내용을 확인할 수 있도록 했습니다.

_Level 1 스프링 부트로 백엔드 입문하기

스프링 부트는 도구 자체에 대한 구조와 개념을 알아야 제대로 활용할 수 있습니다. 개발 환경을 준비하며 스프링 부트의 구조와 개념을 알아본 다음, 기본 프로젝트 실습을 하며 눈과 손으로 익힙니다.

_Level 2 스프링 부트 블로그 제대로 만들기

본격적인 스프링 부트 개발을 할 시간입니다. 여기서는 나만의 블로그를 제대로 개발합니다. RESTful API 개발, 스프링 시큐리티를 활용한 보안 구성, 유지보수를 위한 테스트 코드 작성 및 실행 등 실무에 필요한 내용도 챙깁니다. 본문의 실습은 반복 패턴으로 구성되어 있습니다. 스프링 부트 개발이 처음인 사람에게는 이만큼 연습하기 좋은 구성도 없을 겁니다.

_Level 3 AWS와 깃허브 액션으로 배포/유지보수 편안하게 하기

실무에서는 개발만 하지 않습니다. 배포도 할 줄 알아야 하죠. 여기서는 AWS를 이용한 웹 애플리케이션 배포를 다룹니다. 그뿐 만이 아닙니다. 깃허브 액션을 활용한 CI/CD 과정도 경험하도록 본문을 구성했습니다.


 

서평

“백엔드는 안정성이 중요합니다. 그리고 안정성의 첫 단추는 테스트입니다. 이 책은 유용한 테스트 도구인 포스트맨으로 스프링 부트에서 테스트하는 방법을 초반부터 알려주고, 블로그를 만들어가며 지속적으로 단위 테스트와 포스트맨으로 테스트하는 방법을 다루고 있어 학습자가 충분히 테스트 방법을 익힐 수 있게 한 점이 특히 돋보입니다. 그리고 백엔드 개발자가 알아야 할 내용들은 왜 필요한지, 어떻게 동작하는지에 대한 설명과 함께 친절히 설명합니다. 백엔드 개발자가 되고 싶은데 무엇을 공부해야 할지 모르는 사람이나 입문부터 CI/CD에 이르는 넓은 범위에서 백엔드 개발을 경험하고 싶은 사람에게 적합한 책입니다.”

강대명_ 레몬트리 CTO

 

“초보 개발자도 쉽게 따라 할 수 있는 친절한 실습 구성과 함께 실무에 유용한 알짜배기 스킬을 담고 있습니다. 책을 읽다 보면 마치 신입 개발자를 도와주는 사수가 곁에 있는 것처럼 느껴질 것입니다. 스프링 부트 3를 처음 접하면 복잡한 구조와 구현에 정신이 팔려 주요 개념을 놓치기 쉽습니다. 하지만 이 책은 주요 개념을 놓치지 않고 공부할 수 있도록 안내합니다. 예를 들어 인증, 인가와 같은 실무에서 꼭 알아야 하는 개념을 실습과 함께 쉽게 풀어 완벽하게 이해할 수 있게 해줍니다. 실무 경험이 없는 주니어 개발자에게 특히 추천합니다.”

김수현_ 우아한형제들 안드로이드 개발자


 

“스프링 부트 3의 개념, 흐름을 잡기 좋은 책입니다. 스프링 부트의 배경이 되는 스프링의 개념을 읽고, 실습을 진행하며 JWT, OAuth2, 스프링 시큐리티, CI/CD를 통해 전반적인 스프링 부트 3의 동작 방식을 제대로 경험할 수 있어 좋았습니다. 총평을 하자면 스프링 부트 3의 기초를 실무 감각으로 확실하게 다 질 수 있는 책이라 생각합니다. 실무 과정 자체를 경험할 수 있는 책이라 이 내용을 바탕으로 더 깊은 내용도 공부하기 쉬울 것 같습니다.”

박찬웅_ 개발자


 

“스프링 부트 3를 처음 시작하는 사람도 제대로 된 서비스를 만들고 실행할 수 있도록 스프링 부트 3를 활용하는 방법을 말그대로 처음부터 끝까지 안내해줍니다. 전반적으로 매우 친절하고 재미있는 책이라는 생각이 들었습니다. 특히 AWS 배포는 꼭 직접 실행하며 공부해보기를 추천합니다. 실무 경험이 없는 사람에게 정말 큰 양분이 될 것이라 생각합니다.”

정현준_ 개발자


 

“초보자에게 매우 적합한 스프링 부트 3 입문서입니다. 이 책은 스프링 부트 3의 기초 개념을 실무 흐름에 맞게 배울 수 있도록 구성되어 있습니다. 명확한 설명과 예제를 통해, 초보자도 제대로 된 기능을 모두 탑재한 블로그를 완성할 수 있습니다. 특히 AWS와 깃허브 액션을 사용하여 CI/CD를 구축하는 부분은 실무에서 매우 유용할 것입니다.”

조현석_ 컨스택스 백엔드 개발자


 

저자소개

저자 : 신선영
하드 스킬과 소프트 스킬 역량을 강화하고자 부단히 공부하고 글로 남기는 백엔드 개발자입니다. 평일 기준 하루 평균 600뷰의 기술 블로그를 운영하고, 모교 학생을 대상으로 정기 세미나와 멘토링을 진행합니다. 구독자가 1,000명 정도 되는 사이드 프로젝트를 기획하고 개발하고 운영한 경험이 있습니다.

저자 블로그 shinsunyoung.tistory.com
저자 깃허브 github.com/shinsunyoung
상단으로 이동