스프링 부트 3와 스프링 클라우드를 활용한 마이크로서비스 구축 (ebook)
33,600원
중급
도서 소개
저자 소개
목차
예제 코드
도서 소개
입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!
《스프링 부트 3 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초 이론을 소개하고, 스프링 부트를 이해할 수 있게 동작 원리를 상세히 설명합니다. 또한 ‘스프링 부트’다운 코드를 작성하는 방법에 초점을 맞춰 스프링 부트에서 제공하는 편의 기능들을 최대한 활용하고, API 설계에서 보안까지 실무에서 스프링 부트 기반의 애플리케이션을 설계하고 구현하는 방법을 종합적으로 안내합니다.
이 책에서는 스프링 부트 3 버전을 기반으로 본문과 예제 코드를 업데이트해서 최신 버전의 스프링 부트를 기반으로 애플리케이션을 개발하는 방법을 알려줍니다.
★ 이 책에서 다루는 내용 ★
- 스프링 부트 기초
- REST API의 설계와 구현
- 스프링 데이터 JPA
- 연관관계 매핑
- 테스트 코드 작성
- 테스트 커버리지
- 유효성 검사
- 예외 처리
- 액추에이터
- REST 통신
- 서비스의 인증과 인가
도서 소개

저자 소개
장정우 (Flature)
백엔드 개발자로 일하고 있으며 유튜브 <어라운드 허브 스튜디오>를 운영하면서 IT 정보를 공유하고 있습니다.
목차
- ▣ 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 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 정리
예제 코드
- GitHub 저장소: https://github.com/wikibook/springboot-rev
- ZIP 형식으로 다운로드: https://github.com/wikibook/springboot-rev/archive/refs/heads/main.zip