스프링 기초 이론부터 스프링 부트, 웹 애플리케이션 구현, 보안 강화, 리팩터링, 테스트까지
개발 전반의 내용을 책 한 권에 모두 담았다!
이 책의 최종 목표는 스프링을 다양한 예제를 천천히 따라 하며 배우고, 더불어 실무 감각을 높여 실전에 바로 적용하는 것이다. 이를 위해 1부에서는 기초를 배우고 2부에서는 주어진 실습으로 직접 웹 애플리케이션을 구현한다. 1부에서는 스프링의 기본 구성 요소인 스프링 컨텍스트와 스프링 애스팩트의 사용 방법을 학습한다. 책의 후반부에서 모든 스프링의 기능이 이러한 필수 구성 요소에 의존한다는 것을 알게 될 것이다. 2부에서는 실제로 자주 사용되는 스프링 기능으로 앱을 구현하는 방법을 학습한다. 그리고 스프링이 이러한 작업을 간단하고 쉽게 만들어준다는 것을 알게 될 것이다. 스프링 앱에서 구현한 기능에 대한 단위 테스트와 통합 테스트 작성 방법까지 다루고 있기에 이 한 권으로 개발 전반의 내용을 배울 수 있다. 꼭 배워야 할 개념들만 확실하게 담은 이 책으로 스프링에 쉽게 입문하고 실무에 바로 적용해 보자.
Contents
1부 기초
1장 현실 세계의 스프링
1.1 마이크로서비스 아키텍처로 진화
1.2 스프링 생태계
__1.2.1 스프링 코어의 이해: 스프링 기초
__1.2.2 스프링 데이터 액세스 기능을 사용한 앱 영속성 구현
__1.2.3 웹 앱 개발을 위한 스프링 MVC 기능
__1.2.4 스프링 테스트 기능
__1.2.5 스프링 생태계의 프로젝트
1.3 실제 시나리오에서 스프링
__1.3.1 백엔드 앱 개발에서 스프링 사용
__1.3.2 자동화 테스트 앱에서 스프링 사용
__1.3.3 데스크톱 앱 개발에서 스프링 사용
__1.3.4 모바일 앱에서 스프링 사용
1.4 프레임워크를 사용하지 말아야 할 때
__1.4.1 작게 만들어야 한다
__1.4.2 보안에는 맞춤형 코드가 필요하다
__1.4.3 기존의 과도한 맞춤화로 프레임워크가 실용적이지 못하다
__1.4.4 프레임워크로 바꾸어도 이점이 없다
1.5 이 책에서 배울 것
1.6 요약
2장 스프링 컨텍스트: 빈 정의
2.1 메이븐 프로젝트 생성
2.2 스프링 컨텍스트에 새로운 빈 추가
__2.2.1 @Bean 애너테이션을 사용하여 스프링 컨텍스트에 빈 추가
__2.2.2 스테레오타입 애너테이션으로 스프링 컨텍스트에 빈 추가
__2.2.3 프로그래밍 방식으로 스프링 컨텍스트에 빈 추가
2.3 요약
3장 스프링 컨텍스트: 빈 작성
3.1 구성 파일에서 정의된 빈 간 관계 구현
__3.1.1 두 @Bean 메서드 간 직접 메서드를 호출하는 빈 작성
__3.1.2 @Bean 메서드의 매개변수로 빈 와이어링하기
3.2 @Autowired 애너테이션을 사용한 빈 주입
__3.2.1 @Autowired로 클래스 필드를 이용한 값 주입
__3.2.2 @Autowired를 사용하여 생성자로 값 주입
__3.2.3 setter를 이용한 의존성 주입 사용
3.3 순환 의존성 다루기
3.4 스프링 컨텍스트에서 여러 빈 중 선택하기
3.5 요약
4장 스프링 컨텍스트: 추상화
4.1 계약 정의를 위한 인터페이스 사용
__4.1.1 구현 분리를 위해 인터페이스 사용
__4.1.2 시나리오 요구 사항
__4.1.3 프레임워크 없이 요구 사항 구현
4.2 추상화와 함께 의존성 주입
__4.2.1 스프링 컨텍스트에 포함될 객체 정하기
__4.2.2 추상화에 대한 여러 구현체 중에서 오토와이어링할 것을 선택
4.3 스테레오타입 애너테이션으로 객체의 책임에 집중
4.4 요약
5장 스프링 컨텍스트: 빈의 스코프 및 수명 주기
5.1 싱글톤 빈 스코프 사용
__5.1.1 싱글톤 빈의 작동 방식
__5.1.2 실제 시나리오의 싱글톤 빈
__5.1.3 즉시 및 지연 인스턴스 생성 방식
5.2 프로토타입 빈 스코프 사용
__5.2.1 프로토타입 빈의 동작 방식
__5.2.2 실제 시나리오에서 프로토타입 빈 관리
5.3 요약
6장 스프링 AOP로 애스펙트 사용
6.1 스프링에서 애스펙트 작동 방식
6.2 스프링 AOP를 사용한 애스펙트 구현
__6.2.1 간단한 애스펙트 구현
__6.2.2 가로챈 메서드의 매개변수 및 반환 값 변경
__6.2.3 애너테이션된 메서드 가로채기
__6.2.4 사용 가능한 다른 어드바이스 애너테이션
6.3 애스펙트 실행 체인
6.4 요약
2부 구현
7장 스프링 부트와 스프링 MVC 이해
7.1 웹 앱이란
__7.1.1 웹 앱에 대한 일반적인 개요
__7.1.2 스프링으로 웹 앱을 구현하는 다양한 방식
__7.1.3 웹 앱 개발에서 서블릿 컨테이너 사용
7.2 스프링 부트의 마법
__7.2.1 프로젝트 초기화 서비스를 이용한 스프링 부트 프로젝트 생성
__7.2.2 의존성 스타터를 사용한 의존성 관리 간소화
__7.2.3 의존성에 기반을 둔 관례에 따라 autoconfiguration 사용
7.3 스프링 MVC로 웹 앱 구현
7.4 요약
8장 스프링 부트와 스프링 MVC를 이용한 웹 앱 구현
8.1 동적 뷰를 사용한 웹 앱 구현
__8.1.1 HTTP 요청에서 데이터 얻기
__8.1.2 클라이언트에서 서버로 데이터를 전송하려고 요청 매개변수 사용
__8.1.3 경로 변수로 클라이언트에서 서버로 데이터 전송
8.2 HTTP GET과 POST 메서드 사용
8.3 요약
9장 스프링 웹 스코프
9.1 스프링 웹 앱에서 요청 스코프 사용
9.2 스프링 웹 앱에서 세션 스코프 사용
9.3 스프링 웹 앱에서 애플리케이션 스코프 사용
9.4 요약
10장 REST 서비스 구현
10.1 REST 서비스를 이용한 앱 간 데이터 교환
10.2 REST 엔드포인트 구현
10.3 HTTP 응답 관리
__10.3.1 객체를 응답 본문에 전송
__10.3.2 응답 상태 및 헤더 설정
__10.3.3 엔드포인트 수준에서 예외 관리
10.4 요청 본문을 사용하여 클라이언트의 데이터 가져오기
10.5 요약
12.1 데이터 소스
12.2 JdbcTemplate으로 영속성 데이터 작업
12.3 데이터 소스 구성을 사용자 정의
__12.3.1 애플리케이션 프로퍼티 파일에서 데이터 소스 정의
__12.3.2 사용자 정의 DataSource 빈 사용
12.4 요약
13장 스프링 앱에서 트랜잭션 사용
13.1 트랜잭션
13.2 스프링에서 트랜잭션의 작동 방식
13.3 스프링 앱에서 트랜잭션 사용
13.4 요약
14장 스프링 데이터로 데이터 영속성 구현
14.1 스프링 데이터란
14.2 스프링 데이터의 작동 방식
14.3 스프링 데이터 JDBC 사용
14.4 요약
15장 스프링 앱 테스트
15.1 올바른 테스트 작성
15.2 스프링 앱에서 테스트 구현
__15.2.1 단위 테스트 구현
__15.2.2 통합 테스트 구현
15.3 요약
부록 A
A.1 아키텍처 방식
A.2 컨텍스트 구성에 XML 사용
A.3 HTTP 기초 이해
A.4 JSON 형식 사용
A.5 MySQL 설치와 데이터베이스 생성
A.6 권장 도구
A.7 심화 학습용 추천 자료
A.8 IntelliJ에서 예제 프로젝트 오픈 및 실행
Author
로렌티우 스필카,정성권
엔다바(Endava)에서 전문 개발 리드이자 트레이너로 일하며 유럽, 미국, 아시아의 고객을 대상으로 하는 금융 시장 프로젝트의 개발을 이끌고 있다. 10년 이상의 경력이 있는 그는 고품질의 소프트웨어를 제공하는 것뿐만 아니라 지식을 공유하고 다른 이들의 역량 향상을 돕는 것이 중요하다고 믿는다. 이러한 신념은 그가 자바 기술 관련 코스를 설계하고 가르치며, 발표와 워크숍을 진행하도록 이끌었다.
엔다바(Endava)에서 전문 개발 리드이자 트레이너로 일하며 유럽, 미국, 아시아의 고객을 대상으로 하는 금융 시장 프로젝트의 개발을 이끌고 있다. 10년 이상의 경력이 있는 그는 고품질의 소프트웨어를 제공하는 것뿐만 아니라 지식을 공유하고 다른 이들의 역량 향상을 돕는 것이 중요하다고 믿는다. 이러한 신념은 그가 자바 기술 관련 코스를 설계하고 가르치며, 발표와 워크숍을 진행하도록 이끌었다.