『스프링 부트 3 핵심 가이드』는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초 이론을 소개하고, 스프링 부트를 이해할 수 있게 동작 원리를 상세히 설명한다. 또한 ‘스프링 부트’다운 코드를 작성하는 방법에 초점을 맞춰 스프링 부트에서 제공하는 편의 기능들을 최대한 활용하고, API 설계에서 보안까지 실무에서 스프링 부트 기반의 애플리케이션을 설계하고 구현하는 방법을 종합적으로 안내한다. 이 책에서는 스프링 부트 3 버전을 기반으로 본문과 예제 코드를 업데이트해서 최신 버전의 스프링 부트를 기반으로 애플리케이션을 개발하는 방법을 알려준다.
Contents
▣ 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 정리
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 RestClient란?
12.6 RestClient 사용하기
__12.6.1 RestClient 생성
12.7 정리
▣ 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 정리
Author
장정우
백엔드 개발자로 일하고 있으며 유튜브 [어라운드 허브 스튜디오]를 운영하면서 IT 정보를 공유하고 있다.
백엔드 개발자로 일하고 있으며 유튜브 [어라운드 허브 스튜디오]를 운영하면서 IT 정보를 공유하고 있다.