스프링 부트 핵심 가이드

스프링 부트를 활용한 애플리케이션 개발 실무

입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!

《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고, 스프링에서 제공하는 각종 라이브러리의 기능들을 이해할 수 있게 동작 원리를 상세히 설명합니다. 또한 ‘스프링 부트’다운 코드를 작성하는 방법에 초점을 맞춰 스프링 부트에서 제공하는 편의 기능들을 최대한 활용하고, 스프링 부트 기반의 애플리케이션을 어떻게 설계하고 구현하는지 안내합니다.

★ 이 책에서 다루는 내용 ★

  • 스프링 부트 기초
  • REST API의 작성 방법
  • Spring Data JPA
  • 연관관계 매핑
  • 테스트 코드 작성
  • 테스트 커버리지
  • 유효성 검사
  • 예외 처리
  • 액추에이터
  • REST 통신
  • 서비스의 인증과 인가

 

도서 상세 이미지

장정우

삼성SDS에서 인프라 엔지니어 및 백엔드 개발자로 근무했으며, 현재는 위대한상상에서 결제 시스템 개발 업무를 담당하고 있습니다. 그리고 유튜브 〈어라운드허브 스튜디오〉를 운영하면서 프로그래밍 정보를 공유하고 있습니다.

  • ▣ 01장: 스프링 부트란?
  • 1.1 스프링 프레임워크
  • __1.1.1 제어 역전(IoC)
  • __1.1.2 의존성 주입(DI)
  • __1.1.3 관점 지향 프로그래밍(AOP)
  • __1.1.4 스프링 프레임워크의 다양한 모듈
  • 1.2 스프링 프레임워크 vs. 스프링 부트
  • __1.2.1 의존성 관리
  • __1.2.2 자동 설정
  • __1.2.3 내장 WAS
  • __1.2.4 모니터링
  •  
  • ▣ 02장: 개발에 앞서 알면 좋은 기초 지식
  • 2.1 서버 간 통신
  • 2.2 스프링 부트의 동작 방식
  • 2.3 레이어드 아키텍처
  • 2.4 디자인 패턴
  • __2.4.1 디자인 패턴의 종류
  • __2.4.2 생성 패턴
  • __2.4.3 구조 패턴
  • __2.4.4 행위 패턴
  • 2.5 REST API
  • __2.5.1 REST란?
  • __2.5.2 REST API란?
  • __2.5.3 REST의 특징
  • __2.5.4 REST의 URI 설계 규칙
  •  
  • ▣ 03장: 개발 환경 구성
  • 3.1 자바 JDK 설치
  • 3.2 인텔리제이 IDEA 설치
  •  
  • ▣ 04장: 스프링 부트 애플리케이션 개발하기
  • 4.1 프로젝트 생성
  • __4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기
  • __4.1.2 스프링 공식 사이트에서 프로젝트 생성하기
  • 4.2 pom.xml(Project Object Model) 살펴보기
  • __4.2.1 빌드 관리 도구
  • __4.2.2 메이븐
  • __4.3 Hello World 출력하기
  • __4.3.1 컨트롤러 작성하기
  • __4.3.2 애플리케이션 실행하기
  • __4.3.3 웹 브라우저를 통한 동작 테스트
  • __4.3.4 Talend API Tester를 통한 동작 테스트
  •  
  • ▣ 05장: API를 작성하는 다양한 방법
  • 5.1 프로젝트 설정
  • 5.2 GET API 만들기
  • __5.2.1 @RequestMapping으로 구현하기
  • __5.2.2 매개변수가 없는 GET 메서드 구현
  • __5.2.3 @PathVariable을 활용한 GET 메서드 구현
  • __5.2.4 @RequestParam을 활용한 GET 메서드 구현
  • __5.2.5 DTO 객체를 활용한 GET 메서드 구현
  • 5.3 POST API 만들기
  • __5.3.1 @RequestMapping으로 구현하기
  • __5.3.2 @RequestBody를 활용한 POST 메서드 구현
  • 5.4 PUT API 만들기
  • __5.4.1 @RequestBody를 활용한 PUT 메서드 구현
  • __5.4.2 ResponseEntity를 활용한 PUT 메서드 구현
  • 5.5 DELETE API 만들기
  • __5.5.1 @PathVariable과 @RequestParam을 활용한 DELETE 메서드 구현
  • 5.6 [ 한걸음 더 ] REST API 명세를 문서화하는 방법 – Swagger
  • 5.7 [ 한걸음 더 ] 로깅 라이브러리 – Logback
  • __5.7.1 Logback 설정
  • __5.7.2 Logback 적용하기
  • 5.8 정리
  •  
  • ▣ 06장: 데이터베이스 연동
  • 6.1 마리아DB 설치
  • 6.2 ORM
  • 6.3 JPA
  • 6.4 하이버네이트
  • __6.4.1 Spring Data JPA
  • 6.5 영속성 컨텍스트
  • __6.5.1 엔티티 매니저
  • __6.5.2 엔티티의 생명주기
  • 6.6 데이터베이스 연동
  • __6.6.1 프로젝트 생성
  • 6.7 엔티티 설계
  • __6.7.1 엔티티 관련 기본 어노테이션
  • 6.8 리포지토리 인터페이스 설계
  • __6.8.1 리포지토리 인터페이스 생성
  • __6.8.2 리포지토리 메서드의 생성 규칙
  • 6.9 DAO 설계
  • __6.9.1 DAO 클래스 생성
  • 6.10 DAO 연동을 위한 컨트롤러와 서비스 설계
  • __6.10.1 서비스 클래스 만들기
  • __6.10.2 컨트롤러 생성
  • __6.10.3 Swagger API를 통한 동작 확인
  • 6.11 [한걸음 더] 반복되는 코드의 작성을 생략하는 방법 – 롬복
  • __6.11.1 롬복 설치
  • __6.11.2 롬복 적용
  • __6.11.3 롬복의 주요 어노테이션
  •  
  • ▣ 07장: 테스트 코드 작성하기
  • 7.1 테스트 코드를 작성하는 이유
  • 7.2 단위 테스트와 통합 테스트
  • __7.2.1 단위 테스트의 특징
  • __7.2.2 통합 테스트의 특징
  • 7.3 테스트 코드를 작성하는 방법
  • __7.3.1 Given-When-Then 패턴
  • __7.3.2 좋은 테스트를 작성하는 5가지 속성(F.I.R.S.T)
  • 7.4 JUnit을 활용한 테스트 코드 작성
  • __7.4.1 JUnit의 세부 모듈
  • __7.4.2 스프링 부트 프로젝트 생성
  • __7.4.3 스프링 부트의 테스트 설정
  • __7.4.4 JUnit의 생명주기
  • __7.4.5 스프링 부트에서의 테스트
  • __7.4.6 컨트롤러 객체의 테스트
  • __7.4.7 서비스 객체의 테스트
  • __7.4.8 리포지토리 객체의 테스트
  • 7.5 JaCoCo를 활용한 테스트 커버리지 확인
  • __7.5.1 JaCoCo 플러그인 설정
  • __7.5.2 JaCoCo 테스트 커버리지 확인
  • 7.6 테스트 주도 개발(TDD)
  • __7.6.1 테스트 주도 개발의 개발 주기
  • __7.6.2 테스트 주도 개발의 효과
  • 7.7 정리
  •  
  • ▣ 08장: Spring Data JPA 활용
  • 8.1 프로젝트 생성
  • 8.2 JPQL
  • 8.3 쿼리 메서드 살펴보기
  • __8.3.1 쿼리 메서드의 생성
  • __8.3.2 쿼리 메서드의 주제 키워드
  • __8.3.3 쿼리 메서드의 조건자 키워드
  • 8.4 정렬과 페이징 처리
  • __8.4.1 정렬 처리하기
  • __8.4.2 페이징 처리
  • 8.5 @Query 어노테이션 사용하기
  • 8.6 QueryDSL 적용하기
  • __8.6.1 QueryDSL이란?
  • __8.6.2 QueryDSL의 장점
  • __8.6.3 QueryDSL을 사용하기 위한 프로젝트 설정
  • __8.6.4 기본적인 QueryDSL 사용하기
  • __8.6.5 QuerydslPredicateExecutor, QuerydslRepositorySupport 활용
  • 8.7 [ 한걸음 더 ] JPA Auditing 적용
  • __8.7.1 JPA Auditing 기능 활성화
  • __8.7.2 BaseEntity 만들기
  • 8.8 정리
  •  
  •  
  • ▣ 09장: 연관관계 매핑
  • 9.1 연관관계 매핑 종류와 방향
  • 9.2 프로젝트 생성
  • 9.3 일대일 매핑
  • __9.3.1 일대일 단방향 매핑
  • __9.3.2 일대일 양방향 매핑
  • 9.4 다대일, 일대다 매핑
  • __9.4.1 다대일 단방향 매핑
  • __9.4.2 다대일 양방향 매핑
  • __9.4.3 일대다 단방향 매핑
  • 9.5 다대다 매핑
  • __9.5.1 다대다 단방향 매핑
  • __9.5.2 다대다 양방향 매핑
  • 9.6 영속성 전이
  • __9.6.1 영속성 전이 적용
  • __9.6.2 고아 객체
  • 9.7 정리
  •  
  • ▣ 10장: 유효성 검사와 예외 처리
  • 10.1 일반적인 애플리케이션 유효성 검사의 문제점
  • 10.2 Hibernate Validator
  • 10.3 스프링 부트에서의 유효성 검사
  • __10.3.1 프로젝트 생성
  • __10.3.2 스프링 부트용 유효성 검사 관련 의존성 추가
  • __10.3.3 스프링 부트의 유효성 검사
  • __10.3.4 @Validated 활용
  • __10.3.5 커스텀 Validation 추가
  • 10.4 예외 처리
  • __10.4.1 예외와 에러
  • __10.4.2 예외 클래스
  • __10.4.3 예외 처리 방법
  • __10.4.4 스프링 부트의 예외 처리 방식
  • __10.4.5 커스텀 예외
  • __10.4.6 커스텀 예외 클래스 생성하기
  •  
  • ▣ 11장: 액추에이터 활용하기
  • 11.1 프로젝트 생성 및 액추에이터 종속성 추가
  • 11.2 엔드포인트
  • 11.3 액추에이터 기능 살펴보기
  • __11.3.1 애플리케이션 기본 정보(/info)
  • __11.3.2 애플리케이션 상태(/health)
  • __11.3.3 빈 정보 확인(/beans)
  • __11.3.4 스프링 부트의 자동설정 내역 확인(/conditions)
  • __11.3.5 스프링 환경변수 정보(/env)
  • __11.3.6 로깅 레벨 확인(/loggers)
  • 11.4 액추에이터에 커스텀 기능 만들기
  • __11.4.1 정보 제공 인터페이스의 구현체 생성
  • __11.4.2 커스텀 엔드포인트 생성
  •  
  • ▣ 12장: 서버 간 통신
  • 12.1 RestTemplate이란?
  • __12.1.1 RestTemplate의 동작 원리
  • __12.1.2 RestTemplate의 대표적인 메서드
  • 12.2 RestTemplate 사용하기
  • __12.2.1 서버 프로젝트 생성하기
  • __12.2.2 RestTemplate 구현하기
  • __12.2.3 RestTemplate 커스텀 설정
  • 12.3 WebClient란?
  • __12.3.1 WebClient 구성
  • 12.4 WebClient 사용하기
  • __12.4.1 WebClient 구현
  • 12.5 정리
  •  
  • ▣ 13장: 서비스의 인증과 권한 부여
  • 13.1 보안 용어 이해
  • __13.1.1 인증
  • __13.1.2 인가
  • __13.1.3 접근 주체
  • 13.2 스프링 시큐리티
  • 13.3 스프링 시큐리티의 동작 구조
  • 13.4 JWT
  • __13.4.1 JWT의 구조
  • __13.4.2 JWT 디버거 사용하기
  • 13.5 스프링 시큐리티와 JWT 적용
  • __13.5.1 UserDetails와 UserDetailsService 구현
  • __13.5.2 JwtTokenProvider 구현
  • __13.5.3 JwtAuthenticationFilter 구현
  • __13.5.4 SecurityConfiguration 구현
  • __13.5.5 커스텀 AccessDeniedHandler, AuthenticationEntryPoint 구현
  • __13.5.6 회원가입과 로그인 구현
  • __13.5.7 스프링 시큐리티 테스트
  • 13.6 정리