<책 소개>
입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!
《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고, 스프링에서 제공하는 각종 라이브러리의 기능들을 이해할 수 있게 동작 원리를 상세히 설명합니다. 또한 ‘스프링 부트’다운 코드를 작성하는 방법에 초점을 맞춰 스프링 부트에서 제공하는 편의 기능들을 최대한 활용하고, 스프링 부트 기반의 애플리케이션을 어떻게 설계하고 구현하는지 안내합니다.
★ 이 책에서 다루는 내용 ★
◎ 스프링 부트 기초
◎ 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 정리
스프링 부트 핵심 가이드 / 장정우 (USED)