Top

스프링 5 마스터 2/e [스프링 부트, 스프링 클라우드, 마이크로서비스, 리액티브, 코틀린까지]

  • 원서명Mastering Spring 5, Second Edition: An effective guide to build enterprise applications using Java Spring and Spring Boot framework (ISBN 9781789615692)
  • 지은이랑가 라오 카라남(Ranga Rao Karanam)
  • 옮긴이송주경
  • ISBN : 9791161754406
  • 40,000원
  • 2020년 09월 16일 펴냄
  • 페이퍼백 | 700쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 오픈소스 프로그래밍, 프로그래밍 언어

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/mastering-spring5-2e

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

스프링은 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 가장 핵심적인 기술 중 하나다. 이 책에서는 스프링의 개념과 스프링 프로젝트의 가장 중요한 두 가지인 스프링 프레임워크, 스프링 부트를 살펴보고, 마이크로서비스, 리액티브, 코틀린까지 다룬다. 또한 스프링과 통합되는 다른 기술들과 여러 가지 응용에 관한 전반적인 지식도 다루고 있다. 대중적이고 기본적인 소스코드로 쉽게 따라 하며 학습할 수 있도록 구성해 이해를 돕는다.

이 책에서 다루는 내용

■ AOP, 트랜잭션 관리, 작업 스케줄링 및 스크립팅과 같은 스프링 프레임워크 5.1 기능 탐색
■ 스프링 및 스프링 부트로 REST API 및 마이크로서비스 구축
■ 스프링 시큐리티를 사용해 안전한 REST API 개발
■ 최초의 풀스택 리액트 애플리케이션 구축
■ 스프링 및 스프링 부트로 효율적인 단위 테스트 작성
■ 스프링 부트가 제공하는 애플리케이션 개발 및 모니터링을 위한 고급 기능 이해
■ 스프링 클라우드를 사용해 애플리케이션을 클라우드에 배포 및 관리

이 책의 대상 독자

스프링 프레임워크에 기본 지식이 있는 숙련된 자바 개발자를 대상으로 한다. 스프링 프레임워크, 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 리액티브, 스프링 시큐리티, 스프링 테스트와 같은 다양한 스프링 프로젝트를 자세히 설명한다. 스프링 프레임워크를 사용해 훌륭한 REST API, 마이크로서비스, 풀스택 애플리케이션 및 클라우드 네이티브 애플리케이션을 개발하고 단위 테스트한다.

이 책의 구성

1장, ‘스프링 환경 - 프레임워크, 모듈 및 프로젝트’에서는 초기 버전에서 스프링 5.1에 이르는 스프링 프레임워크의 발전 과정을 알려준다. 스프링은 초창기에 의존 관계 주입(dependency injection)과 핵심 모듈을 사용해 테스트 가능한 애플리케이션을 개발하는 데 사용됐다. 스프링 부트, 스프링 클라우드 및 스프링 클라우드 데이터 플로우와 같은 최신 스프링 프로젝트는 애플리케이션 인프라를 다루고 애플리케이션을 클라우드로 이동시킨다. 다양한 스프링 모듈과 프로젝트의 개요를 살펴보자.
2장, ‘의존 관계 주입 및 단위 테스트’에서는 의존 관계 주입을 자세히 살펴본다. 스프링에서 사용할 수 있는 다양한 종류의 의존 관계 주입 방법과 오토와이어링이 삶에 미친 영향을 알아본다. 단위 테스트도 간략히 살펴본다.
3장, ‘스프링 MVC로 웹 애플리케이션 구축하기’에서는 가장 인기 있는 자바 웹 프레임워크인 스프링 MVC를 사용해 웹 애플리케이션을 구축하는 방법을 설명한다. 스프링 MVC는 깔끔하며 느슨하게 결합된 아키텍처로 컨트롤러, 핸들러 매핑, 뷰 리졸버 및 POJO 커멘드빈의 기능을 명확하게 정의한다. 스프링 MVC는 의존 관계 주입 및 오토와이어링과 같은 모든 핵심 스프링 기능을 이용해 간단하게 만들 수 있고, 서블릿 기반 웹 애플리케이션을 생성한다. 4장, ‘스프링 부트 시작하기’에서는 스프링 부트를 소개하고 프로덕션 수준의 스프링 기반 애플리케이션을 쉽게 개발하는 방법을 설명한다. 스프링 부트의 기본 사항인 스프링 이니셜라이저, 자동 구성 및 스타터 프로젝트를 배운다. 스프링 부트 액추에이터로 애플리케이션을 모니터링하고 생산적인 개발자가 되기 위해 스프링 부트 DevTools를 사용한다.
5장. ‘스프링 프레임워크 심화’에서는 스프링 AOP로 크로스 컷팅 문제를 구현하는 방법을 배운다. 그루비(Groovy) 및 자바스크립트(JSR 223 API)를 사용해 작업을 스케줄링하고 동적 스크립트를 작성하는 방법을 학습한다.
6장, ‘스프링 부트로 REST API 구축하기’에서는 스프링 부트로 훌륭한 REST API를 구축하는 데 집중한다. 기본 REST API를 구현한 다음, 스프링 및 스프링 부트 프레임워크와 다른 기능을 사용하면서 캐싱, 예외 처리, HATEOAS 및 국제화 기능을 추가해본다.
7장, ‘스프링 부트로 REST API 단위 테스트하기’에서는 스프링 부트로 개발된 REST API에 대한 훌륭한 단위 테스트 및 통합 테스트 작성을 살펴본다. 스프링 MockMVC 및 스프링 부트 테스트를 사용해 전체 스프링 컨텍스트를 시작하는 모의 테스트 및 통합 테스트로 단위 테스트를 작성하는 방법을 배운다.
8장, ‘스프링 시큐리티를 활용한 시큐리티 REST API’에서는 인증 및 권한 부여와 같은 가장 중요한 REST API 기능을 살펴본다. 스프링 시큐리티는 자바 세계에서 REST API를 보호하기 위해 선택하는 프레임워크다. 특히 스프링 및 스프링 부트로 빌드된 애플리케이션에 적합하다. 이어서 스프링 시큐리티를 스프링 부트 REST API 프로젝트에 통합하는 방법을 이해한다. 스프링 시큐리티의 핵심 구성요소인 필터, 인증 관리자, 공급자 및 액세스 의사 결정 관리자도 배운다. 또한 기본 인증, OAuth 및 스프링 시큐리티 OAuth와 함께 JWT 사용법을 설명한다.
9장, ‘리액트 및 스프링 부트가 포함된 풀스택 앱’에서는 풀스택 애플리케이션을 설명한다. 널리 사용되는 프론트 엔드 프레임워크 중 하나인 리액트와 함께 간단한 프론트 엔드 애플리케이션을 생성하고 스프링 부트 백엔드와 통합한다. 시큐리티를 포함한 풀스택 개발을 수행할 때 발생할 수 있는 다양한 문제를 설명한다.
10장, ‘스프링 데이터로 데이터 관리하기’에서는 스프링 데이터 모듈을 설명한다. 스프링 데이터의 목표는 다양한 데이터 리포지토리와 관계형 또는 기타 방식으로 대화하는 일반적인 접근 방식을 도입하는 것이다. 스프링과 JPA와 빅데이터 기술을 통합하는 간단한 애플리케이션을 개발해본다.
11장, ‘마이크로서비스 시작하기’에서는 지난 10년 간의 애플리케이션 아키텍처의 진화에 대해 설명한다. 마이크로서비스 및 클라우드-네이티브 애플리케이션이 필요한 이유를 생각해보고 클라우드-네이티브 애플리케이션을 구축하는 데 도움이 되는 다양한 스프링 프로젝트를 살펴본다.
12장, ‘스프링 부트 및 스프링 클라우드로 마이크로서비스 구축하기’에서는 스프링 클라우드 내 프로젝트를 사용해 마이크로서비스를 구현하는 방법을 살펴본다. 구성 관리, 서비스 검색, 서킷 브레이커(circuit breakers) 및 지능형 라우팅을 알아본다. 스프링 클라우드 컨피그, 스프링 클라우드 버스, 립본(Ribbon), 유레카(Eureka), 주울(Zuul), 스프링 클라우드 슬루스(Sleuth), 집킨(Zipkin) 및 히스트릭스(Hystrix)를 사용해 마이크로서비스를 구현한다.
13장, ‘리액티브 프로그래밍’에서는 비동기 데이터 스트림을 사용한 프로그래밍을 설명한다. 리액티브 프로그래밍을 이해하고, 스프링 프레임워크에서 제공하는 기능을 간단히 살펴본다. 14장, ‘스프링 모범 사례’에서는 스프링을 사용해 엔터프라이즈 애플리케이션을 개발하고, 단위 테스트, 통합 테스트, 스프링 구성 유지 보수 등과 관련된 모범 사례를 소개한다.
15장, ‘스프링에서 코틀린 개발하기’에서는 빠르게 인기를 얻고 있는 JVM 언어인 코틀린을 소개한다. 15장에서는 이클립스에서 코틀린 프로젝트를 설정하는 방법의 지침을 제공한다. 코틀린을 사용해 새로운 스프링 부트 프로젝트를 만들고 단위 및 통합 테스트를 통해 몇 가지 기본 서비스를 구현한다.

저자/역자 소개

지은이의 말

스프링 프레임워크는 자바 세계의 엔터프라이즈 애플리케이션 개발에 혁명을 일으켰는데, 거의 15년 동안 선택된 프레임워크다. 이 책은 테스트 가능한 느슨하게 연결된 애플리케이션의 문제 해결부터 웹 애플리케이션 및 REST API 구축에 이르기까지 모든 발전 과정을 이해하는 데 도움이 되도록 구성했다. 오늘날 풀스택 애플리케이션을 위한 클라우드 네이티브 마이크로서비스 및 API 백엔드를 구축할 때 도움이 되는 다양한 스프링 프로젝트를 사용할 수 있다. 스프링 프레임워크, 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 리액티브, 스프링 시큐리티 및 스프링 테스트와 같은 중요한 스프링 프로젝트를 심도 있게 살펴볼 것이다. 웹 애플리케이션, Todo REST API, 여러 클라우드 네이티브 마이크로서비스 및 기본 풀스택 애플리케이션을 구축해 다양한 스프링 프로젝트를 이해한다. 스프링 부트의 고급 기능은 다양한 예제를 통해 살펴본다.
책에서 다루는 내용을 제대로 이해하면 스프링, 스프링 부트 및 스프링 클라우드로 애플리케이션을 개발하는 데 필요한 지식과 모범 사례를 습득할 수 있게 될 것이다.

지은이 소개

랑가 라오 카라남(Ranga Rao Karanam)

클라우드, 마이크로서비스, 스프링, 스프링 부트 및 컨테이너와 관련해 전세계 30만 명의 개발자를 교육하는 in28Minutes의 설립자다. 프로그래밍을 즐기며 확장 가능한 클라우드 애플리케이션을 개발하는 스타트업 컨설팅을 좋아한다. 특히 BDD, 지속적 배포, 데브옵스와 같은 현대적인 개발 관행을 따르는 스타트업을 선호한다.
하이킹과 크리켓, 테니스를 즐기며 1년 동안 히말라야를 하이킹하는 것이 꿈이다.

옮긴이의 말

스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크다. 자바 개발자에게 친숙한 풀스택 애플리케이션으로 현재까지 많은 사랑을 받고 있다. 웹 애플리케이션을 개발하는 데 공기와 같은 존재라고 할 정도로 스프링 프레임워크는 널리 알려져 있고 많이 사용된다.
스프링 프레임워크에 의존도가 높아질수록 다른 기술을 접목시키고 융합할 수 있는 기회는 적어질 수도 있다. 물론 다양한 언어, 프레임워크와 기술을 융합해 사용한다는 것이 반드시 좋다고는 말할 수 없다. 개발 환경 및 프로세스의 통일이라는 기준에서 보면 단일 프레임워크가 좀더 효율적일 수도 있다. 이러한 측면에서 다른 언어가 아닌 같은 언어(여기서는 자바)와 같은 오픈소스에서 파생된 기술을 찾아보고, 새로운 프로젝트에 그것들을 적용해 보는 것도 개발자들에게 또 하나의 즐거움이 된다.
스프링 프로젝트에서 나온 여러 가지 기술은 현재 많은 곳에서 다양한 프로젝트에 적용되고 있다. 단순히 스프링 프레임워크만 알고 있다면 초급 개발자거나 새로운 기술에 열정이 부족한 시니어 개발자일 것이다. 이러한 개발자들에게 어쩌면 단비와도 같은 책일지도 모른다. 단순히 스프링 프레임워크에 길들여져 새로운 기술이나 프레임워크를 배우기 귀찮아하는 개발자들에게 스프링 프로젝트에 있는 여러가지 프로젝트, 즉 스프링 클라우드, 스프링 부트, 리액티브 프로그래밍, 코틀린, 마이크로서비스에 관련된 지식을 익히는 데 도움을 줄 것이다. 이 책은 스프링 5의 기본을 잘 쌓을 수 있고, 스프링 부트를 활용하거나 고급 기능들을 익히는 데 많은 도움이 될 것이다. 잘 따라 하다 보면 마이크로서비스를 구축하고 클라우드에 필요한 기술들도 쉽게 습득할 수 있다. 스프링을 기반으로 전반적인 트렌드 기술을 익히기에 적합하며 코틀린에 관련된 지식도 얻을 수 있다.
스프링은 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하며 표준 프레임워크의 기반 기술로써 쓰이는 가장 대중적이고 직관적인 프레임워크 중 하나다. 스프링 기본 개념을 익혀두면 예제를 이해할 때 많은 도움이 될 것이다.
스프링을 활용한 기술들은 계속 발전할 텐데, 그중에서도 풀스택 애플리케이션 개발 분야에서 더욱 성장할 전망이다. 아무쪼록 많은 개발자들에게 도움이 되는 책이길 소망한다.
미흡하지만 좀더 매끄럽고 정확한 의미전달이 되도록 하기 위해 최선을 다했으나 미비한 점은 계속해서 수정판을 출간함으로써 보완하고자 한다.

옮긴이 소개

송주경

삼성전자와 LG전자 연구소에서 연구원으로 소프트웨어를 개발했다. 현재 기업과 대학에서 예술과 기술 융합을 비롯해 생활 속 과학, 창의적 사고와 코딩, 아트워크 실습 등 다양한 강의를 하고 있으며 관련 컨설팅도 진행 중이다.

목차

목차
  • 1부 스프링과 스프링 부트 시작하기
  • 1장. 스프링 환경 - 프레임워크, 모듈 및 프로젝트
    • 스프링 탐색과 진화
    • 스프링 프레임워크의 첫 번째 버전
      • 느슨한 결합 및 테스트 가능성
      • 아키텍처의 유연성
      • 복잡한 코드 감소
    • 스프링 프레임워크의 초기 - 스프링 프로젝트
      • 자바 EE 보다 앞서간 스프링 웹 서비스
    • 마이크로서비스로의 진화 - 스프링 부트 및 스프링 클라우드
      • 스프링 부트로 마이크로서비스를 빠르게 구축하기
      • 스프링 클라우드를 사용해 마이크로서비스와 클라우드 연결하기
      • 잠시 배운 것을 복습해보면
    • 스프링 모듈
    • 스프링 코어 컨테이너
    • 크로스 컷팅
    • 웹 - 스프링 MVC
      • 비즈니스 레이어
      • 데이터 레이어
    • 스프링 프로젝트
      • 스프링 부트
      • 스프링 클라우드
      • 스프링 데이터
      • 스프링 배치
      • 스프링 시큐리티
      • 스프링 HATEOAS
    • 스프링 프레임워크 5.0과 5.1의 새로운 기능
      • 기준선 업그레이드
      • 자바 11 지원
      • 스프링 프레임워크 코드에서 JDK8 기능 사용
      • 리액티브 프로그래밍 지원
      • 함수형 웹 프레임워크
      • 직소를 사용한 자바 모듈성
      • 코틀린 지원
      • 삭제된 기능
    • 스프링 부트 2.0과 2.1의 새로운 기능
    • 요약

  • 2장. 의존 관계 주입 및 단위 테스트
    • 기술적 요구사항
    • 의존 관계
    • 의존 관계를 갖는 이유
    • 의존 관계 주입의 개념
      • 느슨하고 단단한 결합
      • 단단한 결합을 제거하고 코드를 느슨하게 결합하기
    • 스프링 프레임워크는 무엇을 할까?
      • 질문 1 - 스프링 IoC 컨테이너는 어떤 빈을 생성해야 하는지 어떻게 알까?
      • 질문 2 - 스프링 IoC 컨테이너는 빈의 의존 관계를 어떻게 알 수 있을까?
      • 스프링 IoC 컨테이너 생성
    • 스프링 프레임워크
      • 컨테이너 관리 빈
      • 자바 대 XML 구성
      • 애플리케이션 컨텍스트에 XML 구성 사용
      • @Autowired 어노테이션
      • @Primary 어노테이션
      • @Qualifier 어노테이션
      • 의존 관계 주입 옵션
      • 스프링 빈 스코프 사용자 정의
      • 기타 중요한 스프링 어노테이션
    • CDI 탐색
      • CDI의 예
    • 스프링 애플리케이션 컨텍스트의 단위 테스트
      • 단위 테스트란?
      • 스프링 컨텍스트를 사용해 JUnit 작성
      • 모크를 사용한 단위 테스트
    • 요약

  • 3장. 스프링 MVC로 웹 애플리케이션 구축
    • 기술적 요구사항
    • 자바 서블릿 웹 애플리케이션 아키텍처
      • 모델1 아키텍처
      • 모델2 아키텍처
      • 모델2 프론트 컨트롤러 아키텍처
    • 6가지 기본 플로우 예제가 있는 스프링 MVC 학습
      • 스프링 MVC 애플리케이션 설정
      • 플로우1 - 뷰 없는 간단한 컨트롤러 플로우
      • 플로우2 - 뷰(JSP)로 간단한 컨트롤러 플로우 만들기
      • 플로우3 - 모델이 있는 뷰로 전환하는 컨트롤러
      • 플로우4 - ModelAndView를 사용해 뷰로 전환하는 컨트롤러
      • 플로우5 - 폼이 있는 뷰로 전환하는 컨트롤러
      • 플로우6 - 이전 플로우에 유효성 검사 추가
    • 스프링 MVC
    • 스프링 MVC의 핵심 개념
      • RequestMapping
      • 뷰 리솔루션
      • 핸들러 맵핑 및 인터셉터 탐색
      • 모델 속성
      • 세션 속성 사용
      • InitBinder의 필요성
      • @ControllerAdvice 어노테이션을 사용해 공통 기능 구현하기
    • 스프링 MVC 고급 기능 살펴보기
      • 예외 처리 구현하기
      • 애플리케이션 국제화
      • 정적 리소스 제공
      • 스프링 MVC와 부트 스트랩 통합하기
    • 스프링 MVC 애플리케이션의 단위 테스트 ? 기본 플로우
      • 플로우1 - 뷰 없는 간단한 컨트롤러 플로우
      • 플로우2 - 뷰가 있는 간단한 컨트롤러 플로우
      • 플로우3 - 모델이 있는 뷰로 전환하는 컨트롤러
      • 플로우4 - ModelAndView를 사용해 뷰로 전환하는 컨트롤러
      • 플로우5 - 폼이 있는 뷰로 전환하는 컨트롤러
      • 플로우6 - 이전 플로우에 유효성 검사 추가
    • 스프링 MVC 컨트롤러의 통합 테스트 작성
    • 스프링 시큐리티
      • 스프링 시큐리티 의존 관계 추가
      • 모든 요청을 인터셉트하도록 필터 설정
      • 로그아웃
    • 요약

  • 4장. 스프링 부트 시작
    • 기술적 요구사항
    • 스프링 부트란?
      • 애플리케이션의 빠른 프로토타입 구축 단계
      • 스프링 부트의 기본 목표
      • 스프링 부트의 비기능적 특징
    • 스프링 부트로 Hello World 애플리케이션 구축하기
      • spring-boot-starter-parent로 pom.xml 생성하기
      • 스타터 프로젝트로 pom.xml 구성
      • spring-boot-maven-plugin 설정
      • 첫 번째 스프링 부트 launch 클래스 생성
      • Hello World 애플리케이션 실행
      • 자동 설정
      • 스프링 부트 스타터 프로젝트
    • 스프링 이니셜라이저 시작하기
      • 첫 스프링 이니셜라이저 프로젝트 생성하기
    • 자동 설정
    • 애플리케이션 구성 외부화
      • application.properties 시작하기
      • application.properties를 통한 프레임워크 사용자 정의
      • 애플리케이션별로 사용자-정의 속성 정의하기
      • 다른 환경에 대한 프로파일 생성
      • 애플리케이션 구성을 제공하기 위한 기타 옵션
      • YAML 구성
    • 임베디드 서버
      • 전통적인 자바 애플리케이션 배포
      • 임베디드 서버
      • 제티 및 언더토우 임베디드 서버로 전환하기
      • JAR를 사용하는 대신 기존 WAR 파일 빌드
    • 개발자 도구를 사용해 생산성 향상
      • 브라우저에서 실시간 리로드 활성화
    • 애플리케이션 모니터링에 스프링 부트 액추에이터 사용하기
      • HAL 브라우저를 사용해 액추에이터 엔드포인트 찾기
      • 애플리케이션 구성 속성
      • 환경 세부 정보
      • 애플리케이션 상태 모니터링
      • 매핑 정보 얻기
      • 빈 구성으로 디버깅하기
      • 중요한 매트릭스 탐색하기
      • 자동 설정의 디버그 정보 얻기
      • 디버깅
    • 요약

  • 5장. 스프링 프레임워크 심화
    • 기술적 요구사항
    • 스프링과 AspectJ로 AOP 살펴보기
      • 크로스 컷팅 및 AOP 탐색
      • 중요한 AOP 용어
      • AOP 프레임워크
      • AOP 실습
    • 스프링으로 작업 스케줄링하기
      • @Scheduled로 작업 스케줄링하기
      • @Async를 사용해 비동기식으로 작업 실행하기
      • 작업 실행자
    • 스프링 프레임워크를 이용한 스크립팅
      • JSR 223 - 자바TM 플랫폼용 스크립팅
      • 스프링 엔터프라이즈 애플리케이션에서 그루비 코드 실행하기
    • 요약

  • 2부 스프링으로 REST API와 풀스택 애플리케이션 구축하기
  • 6장. 스프링 부트로 REST API 구축
    • REST
    • 첫 번째 REST API 설계
      • REST API 연산을 위한 요청 메소드 및 URI 결정하기
      • API 생성을 위한 고급 접근 방법
    • 스프링 부트로 Hello World API 만들기
      • Hello World 문자열을 반환하는 API 만들기
      • welcome JSON 응답을 리턴하는 REST API 만들기
      • name 경로 변수로 welcome 메시지 만들기
    • todo REST API 만들기
      • 빈과 서비스 설정
      • todo 리스트 검색하기
      • 특정 Todo의 세부사항 검색
      • Todo 추가
      • Todo 업데이트
      • Todo 삭제하기
    • REST API에 대한 예외 처리 구현하기
      • 스프링 부트 디폴트 예외 처리
      • 예외 응답 커스터마이징
    • HATEOAS
      • 응답으로 HATEOAS 링크 보내기
    • REST API에 대한 유효성 검사 구현하기
      • 컨트롤러 메소드에서 유효성 검사 활성화하기
      • 빈에서 유효성 검사 정의하기
    • OpenAPI 스펙을 사용한 REST 서비스 문서화
      • 스웨거 스펙 생성하기
      • 스웨거 스펙 살펴보기
    • REST API 국제화 구현하기
    • REST API 캐싱 구현하기
      • caching-spring-boot-starter-cache를 위한 스타터 프로젝트
      • 애플리케이션의 캐싱 활성화하기
      • 데이터 캐싱
      • JSR-107 캐싱 어노테이션
    • 클라우드에 스프링 부트 애플리케이션 배포하기
      • 클라우드 파운드리에 애플리케이션 배포하기
    • 요약

  • 7장. 스프링 부트를 이용한 REST API 단위 테스트
    • 기술적 요구사항
    • 스프링 부트를 이용한 REST API 단위 테스트
      • 스프링 부트 스타터 테스트에 대한 의존 관계 추가
      • BasicController API 단위 테스트
      • TodoController API에 대한 단위 테스트
    • 스프링 부트와 REST API 통합 테스트
      • BasicController에 대한 통합 테스트 작성
      • TodoController API에 대한 통합 테스트
    • 단위 및 통합 테스트 모범 사례
    • 요약

  • 8장. 스프링 시큐리티를 활용한 시큐리티 REST API
    • 기술적 요구사항
    • 스프링 시큐리티를 이용한 시큐리티 REST API
      • REST API 시큐리티
      • REST API 시큐리티 구현하기
      • Todo API에 스프링 시큐리티 추가하기
    • 스프링 시큐리티
      • 로그 검토
      • 스프링 시큐리티 필터
      • 스프링 시큐리티의 인증
      • 스프링 시큐리티의 인증 확장 포인트
      • 스프링 시큐리티의 권한
      • 스프링 시큐리티의 인증 확장 포인트
      • 서비스 메소드에 대한 시큐리티 어노테이션 제공
      • 서비스 메소드에 대한 JSR-250 어노테이션 제공
      • 스프링 시큐리티 pre 및 post 어노테이션
      • 스프링 시큐리티를 이용한 시큐리티 모범 사례 구현
    • OAuth2 인증
      • OAuth2 상위 플로우
      • OAuth2 서버 생성하기
    • JWT를 이용한 인증
      • JWT
      • OAuth2와 함께 JWT 사용하기
    • 요약

  • 9장. 리액트 및 스프링 부트가 포함된 풀스택 앱
    • 기술적 요구사항
    • 풀스택 아키텍처
      • 풀스택 아키텍처의 필요성
    • 리액트
      • 프론트 엔드 애플리케이션의 컴포넌트
      • JSX
      • JSX와 컴포넌트 결합하기
    • 첫 번째 리액트 애플리케이션 빌드
      • create-react-app
      • 비주얼 스튜디오 코드 IDE로 리액트 애플리케이션 가져오기
      • 리액트 프레임워크 초기화하기
      • Todo 컴포넌트 생성하기
      • 기본 Todo 관리 기능 추가하기
      • RESTful API를 호출하는 todo 추가하기
      • 인증
    • 요약

  • 10장. 스프링 데이터로 데이터 관리하기
    • 기술적 요구사항
    • 다양한 데이터 레파지토리의 과제
    • 관계형 데이터베이스와 통신하기
    • 스프링 데이터
      • 스프링 데이터 커먼즈
    • 스프링 데이터 JPA를 사용해 관계형 데이터베이스에 연결하기
      • 스프링 데이터 JPA 예제
      • 거래 관리 시작하기
    • 스프링 데이터를 이용한 몽고DB와의 상호 작용
      • 의존 관계 설정
      • Person 엔티티 생성하기
      • Person 레파지토리 생성하기
      • 단위 테스트에서 레파지토리 테스트하기
    • 스프링 데이터 REST를 사용해 REST API 생성하기
      • GET 메소드
      • POST 메소드
      • 검색 리소스
    • 요약

  • 3부 스프링을 이용한 클라우드, 마이크로서비스 및 모범 사례
  • 11장. 마이크로서비스 시작
    • 애플리케이션 개발 목표
    • 빠른 애플리케이션 구축 - 속도
    • 신뢰할 수 있는 애플리케이션 구축 - 안전
      • 신뢰성 - 애플리케이션이 예상대로 작동할까?
      • 가용성 - 애플리케이션을 항상 사용할 수 있을까?
      • 안전성 - 애플리케이션은 안전한가?
      • 성능 - 애플리케이션이 충분히 빠른가?
      • 높은 복원력 - 애플리케이션이 실패에 잘 반응할까?
    • 확장성 - 애플리케이션 로딩이 급격히 증가할 때 무엇을 지원해야 할까?
    • 모놀리식 애플리케이션 문제
      • 릴리스 업데이트의 문제 - 긴 릴리스 주기
      • 확장의 어려움
      • 새로운 기술을 적응시키는 데 어려움
      • 새로운 방법론 적용의 어려움
      • 현대적인 개발 사례 적용의 어려움
    • 마이크로서비스 시작
      • 마이크로서비스란 무엇일까?
      • 마이크로서비스 아키텍처의 큰 그림
      • 마이크로서비스 특성
      • 마이크로서비스 아키텍처의 장점
      • 마이크로서비스 문제
    • 클라우드-네이티브 애플리케이션
      • 12-팩터 앱이란 무엇일까?
    • 마이크로서비스를 위한 스프링 프로젝트
      • 스프링 부트
      • 스프링 클라우드 시작하기
    • 요약

  • 12장. 스프링 부트 및 스프링 클라우드로 마이크로서비스 구축
    • 기술적 요구사항
    • 마이크로서비스
      • 마이크로서비스A 설정
      • 서비스 소비자 마이크로서비스 구축하기
    • 스프링 부트 및 스프링 클라우드 권장 버전 사용
    • 중앙 집중식 마이크로서비스 구성
      • 문제 기술
      • 솔루션
      • 옵션
      • 스프링 클라우드 컨피그
    • 이벤트 중심 접근법에 대한 개요
      • JMS API를 이용한 스프링 JMS
      • AMQP
    • 스프링 클라우드 버스
      • 스프링 클라우드 버스의 필요성
      • 스프링 클라우드 버스를 이용한 설정 변경 전파
      • 스프링 클라우드 버스 구현
    • 선언적 REST 클라이언트 - 페인
    • 마이크로서비스를 위한 로드 밸런싱 구현
      • 클라이언트-사이드 로드 밸런싱을 위한 립본
    • 네임 서버의 필요성
      • 마이크로서비스 URL 하드 코딩의 한계
    • 네임 서버 작동
      • 스프링 클라우드에서 지원하는 네임 서버 옵션
      • 유레카 명명 서비스 구현
    • API 게이트웨이
      • 주울을 이용한 API 게이트웨이 구현
    • 분산 추적
      • 스프링 클라우드 슬루스 및 집킨 구현
    • 히스트릭스로 내결함성 구현
      • 서비스 소비자 마이크로서비스에 히스트릭스 통합
    • 요약

  • 13장. 리액티브 프로그래밍
    • 기술적 요구사항
    • 리액티브 선언
      • 리액티브 시스템의 특성
    • 리액티브 유스케이스 - 주가 페이지
      • 전통적인 접근 방식
      • 리액티브 접근 방식
      • 전통적인 접근 방식과 리액티브 방식의 비교
    • 자바에서 리액티브 프로그래밍 구현
      • 리액티브 스트림
      • 리액터 프레임워크
      • 스프링 웹 리액티브로 리액티브 웹 애플리케이션 생성하기
      • 리액티브 데이터베이스와 통합
      • SpringReactiveExampleApplication 실행
    • 요약

  • 14장. 스프링 모범 사례
    • 메이븐 표준 디렉토리 레이아웃
    • 레이어 아키텍처를 사용한 애플리케이션 구축
    • 다른 레이어에 대한 별도의 컨텍스트 파일이 있다
    • 중요한 레이어에 대한 API와 impl 분리
    • 예외 처리 모범 사례
      • 예외 처리에 대한 스프링의 접근 방식
      • 권장 접근법
    • 스프링 구성 간결하게 유지
    • ComponentScan에서 basePackageClasses 속성 사용
    • 스키마 참조에서 버전 번호를 사용하지 않는다
    • 필수 의존 관계에 대한 생성자 주입 선호
    • 스프링 프로젝트의 의존 관계 버전 관리
    • 단위 테스트 모범 사례
      • 비즈니스 레이어에 대한 테스트 작성
      • 웹 레이어에 대한 테스트 작성
      • 데이터 레이어에 대한 테스트 작성
      • 다른 애플리케이션 개발 모범 사례
    • 통합 테스트 모범 사례
      • 스프링 세션을 이용한 세션 관리
      • 레디스로 스프링 세션 구현
    • 캐싱 모범 사례
      • spring-boot-starter-cache 의존 관계 추가
      • 캐싱 어노테이션 추가
    • 로깅 모범 사례
      • 로그백 프레임워크 사용
      • log4j2
      • 프레임워크 독립 구성 제공
    • 요약

  • 15장. 스프링에서 코틀린 개발
    • 기술적 요구사항
    • 코틀린
    • 코틀린 대 자바
      • 변수 생성 및 타입 유추
      • 변수의 불변성
      • 타입 시스템
      • null 세이프
      • 코틀린의 함수 정의
      • 배열
      • 코틀린 컬렉션
      • 언체크된 예외 처리
      • 빈에 데이터 클래스 사용하기
    • 이클립스에서 코틀린 프로젝트 만들기
      • 코틀린 플러그인
      • 코틀린 프로젝트 생성
      • 코틀린 클래스 만들기
      • 코틀린 클래스 실행
    • 코틀린을 사용해 스프링 부트 프로젝트 생성
      • pom.xml에 의존 관계 및 플러그인 추가
      • 스프링 부트 애플리케이션 클래스
      • 스프링 부트 애플리케이션 테스트 클래스
    • 코틀린을 이용한 REST 서비스 구현
      • 문자열을 반환하는 간단한 메소드
      • 객체를 반환하는 간단한 REST 메소드
      • path 변수를 가진 GET 메소드
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.50 : 10행]
aspect oriented framework
->
aspect oriented programming

[p.97 코드]
ClassPathXmlApplicationContext
->
BusinessApplicationContext.xml

[p.104 표 ‘@Inject’ 설명]
한 가지 중요한 차이점은 @Inject에 필요한 속성이 없다.
->
@Inject는 ‘required’ 속성이 없다.

[p.217 코드 마지막 행]
server can accept server.tomcat.max-connections=
->
server.tomcat.max-connections=

[p.251 '디버깅']
- /application/heapdump
- /application/httptrace
- /application/threaddump
->
- /actuator/heapdump
- /actuator/httptrace
- /actuator/threaddump

[p.268 '사용자 정의 AOP 어노테이션 정의하기’ 2-3행]
또한 사용자 정의 어노테이션을 정의하고 어노테이션 포인트컷으로 어드바이스를 적용할 메소드를 식별했다.
->
사용자 정의 어노테이션을 정의할 수 있고, 어노테이션 포인트컷을 사용해 어드바이스를 적용할 메소드를 식별할 수 있다.

[p.304 아래에서 2행]
ResourceEntity를 사용한다.
->
ResponseEntity를 사용한다.

[p.394]
Use DetailsService의 커스텀 구현 제공
->
UserDetailsService의 커스텀 구현 제공

[p.402 9행]
ADMIN의 Role과 같하다.
->
ADMIN의 Role과 같다.

[p.404 1행]
@RolesAllowed는 @Secured와 같은 JSR250 어노테이션이다.
->
@RolesAllowed는 @Secured와 같은 역할을 하는 JSR250 어노테이션이다.

[p.376 아래에서 2행]
https://깃허브.com/PacktPublishing/Mastering-Spring-5.1/tree/master/Chapter08
->
https://github.com/PacktPublishing/Mastering-Spring-5.1/tree/master/Chapter08