스프링 웹 프로그래밍은 2022년 말에 발표된 새로운 버전의 스프링과 스프링 부트 프레임워크를 활용하여 JSP와 함께 스프링 웹 MVC 애플리케이션을 개발하는 방법을 설명한다. 또한 스프링 데이터 프레임워크와 함께 JDBC와 JPA를 사용하여 데이터베이스에 액세스하는 방법과 스프링 보안 프레임워크를 사용하여 웹 보안을 구현하는 방법을 설명한다.
또한 스프링 부트 프레임워크와 함께 마이바티스 프레임워크를 연동하여 데이터베이스에 액세스하는 방법에 대해서도 설명한다.
이 책의 1장 스프링 프레임워크 들어가기에서는 프레임워크와 스프링 프레임워크의 개요와 함께 의존성 주입이라고 하는 필수적인 개념에 대해 설명한다.
2장 스프링 프레임워크 핵심 기능에서는 스프링 프레임워크가 제공하는 핵심 기능들에 대해서 학습한다. 여기에는 스프링 애플리케이션 컨텍스트와 스프링 빈 생성, 그리고 의존성 주입 방법과 어노테이션 설정 방법에 대해서 살펴본다.
이 책은 모두 17개의 실습 과제를 포함하고 있다. 이들 실습에서는 자바 프로그래밍 기초와 SQL 프로그래밍에서도 사용한 주문 관리 시스템 예제 프로젝트를 생성하고 각 장에서 설명한 기술을 사용하여 실제로 프로그램을 작성하는 과정을 단계별로 설명한다. 2장의 마지막 부분에서는 자바 프로그래밍 기초 책에서 구현했던 주문 관리 시스템 예제 프로젝트를 스프링 프레임워크를 사용하여 다시 작성하는 과정을 통해 스프링 프레임워크의 편의성과 중요성을 경험해본다.
3장 스프링 AOP에서는 AOP 즉, 관점 지향 프로그래밍 방식에 대한 개념과 함께 스프링 프레임워크에서 AOP를 구현하는 방법에 대해서 학습한다.
4장 스프링 MVC 들어가기에서는 본격적으로 스프링 MVC 프레임워크를 사용하여 웹 애플리케이션을 구축하는 길로 들어간다. 먼저 MVC 패턴의 개념에 대해 이해하고, 스프링 MVC 프레임워크의 아키텍처를 개관한다. 장담하건데 이 장에서 설명하는 스프링 MVC 프레임워크 아키텍처를 이해하고 머릿속에 넣어둔다면 나머지 스프링 프레임워크의 모든 마법을 다 풀어버릴 수 있을 것이다.
5장 컨트롤러 구현에서는 HTPP 요청을 처리하는 컨트롤러를 구현하는 방법에 대해서 학습한다. 이와 함께 두 번째 실습 과제로 주문 관리 시스템의 고객 관리 부분의 컨트롤러를 구현한다. 그리고 세 번째와 네 번째 실습에서 제품 및 재고 관리 부분과 주문 관리 부분의 컨트롤러도 함께 구현한다.
6장 뷰 리졸버와 뷰에서는 뷰 리졸버에 대한 개요와 함께, JST 뷰와 웹 폼을 구현하는 방법에 대해 학습한다. 이 장에서 JSP에 대해 간략하게 설명하지만 아무래도 효율적으로 JSP를 활용하기 위해서는 깊이 있는 지식이 필요하다. 이것을 위해 필자의 JSP 서블릿 웹 프로그래밍 책은 좋은 선택이다. 또한 PDF에 제품의 목록을 출력하는 PDF 뷰를 구현하는 방법에 대해서도 살펴본다. 그리고 네 개의 실습 과제를 통해서 주문 관리 시스템의 각 뷰를 구현하는 작업을 순차적으로 수행한다.
7장 뷰 구현 기법에서는 타입 변환과 빈 검증, 파일 업로드, 국제화, 로케일 리졸버와 같은 고급 뷰 구현 기법에 대해서 학습한다.
8장과 9장에서는 스프링 데이터 프레임워크와 함께 JDBC와 JPA를 사용하여 데이터베이스로부터 데이터를 읽어오고 데이터를 저장하는 방법에 대해 학습한다. 이것을 위해 필자의 저서인 SQL 프로그래밍에서 구축한 데이터베이스를 사용한다. 이 책에서도 데이터베이스를 설치하는 방법과 기본적인 SQL 구문에 대해서는 설명하지만 깊이 있는 지식을 갖기 위해서는 먼저 SQL 프로그래밍 책을 읽을 것을 권장한다.
8장 스프링 데이터 JDBC에서는 데이터베이스와 SQL을 개관하고 오라클 데이터베이스와 마이크로소프트 SQL 서버, 그리고 MySQL과 PostgreSQL 등 네 개의 데이터베이스 서버와 개발 도구를 설치하는 방법과 데이터베이스를 생성하는 방법에 대해서 설명한다. 이와 함께 스프링 JDBC API와 스프링 JDBC 템플릿, 스프링 JDBC 지원 클래스를 사용하여 데이터 액세스를 구현하는 방법, 그리고 트랜잭션 개념과 함께 스프링 트랜잭션을 사용하여 트랜잭션을 구현하는 방법에 대해서 학습한다. 또한 고객 레파지토리 컴포넌트와 제품 및 재고 레파지토리 컴포넌트, 그리고 주문 레파지토리 컴포넌트를 스프링 데이터 JDBC를 사용하여 구현하는 네 개의 실습을 수행한다.
9장 스프링 데이터 JPA에서는 JPA와 ORM에 대한 개념을 학습하고, 스프링 데이터 프레임워크와 JPA를 연동하는 방법과 함께, 엔터티 클래스와 테이블을 매핑하고 스프링 데이터 JPA API를 사용하여 질의하는 방법에 대해 학습한다. 그리고 또한 고객 레파지토리 컴포넌트와 제품 및 재고 레파지토리 컴포넌트, 그리고 주문 레파지토리 컴포넌트를 스프링 데이터 JPA를 사용하여 구현하는 세 개의 실습을 수행한다.
10장 스프링 부트에서는 스프링 부트 프레임워크를 개관하고 지금까지 구현했던 스프링 MVC 애플리케이션을 스프링 부트로 전환하면서 스프링 부트 프레임워크가 제공하는 이점을 경험해본다.
11장 스프링 웹 보안에서는 웹 보안을 개관하고, SSL과 TSL 프로토콜을 사용하여 HTTPS 프로토콜을 구현하는 방법을 살펴본다. 그리고 스프링 보안 프레임워크를 사용하여 인증과 권한을 설정하는 방법과 리소스를 보호하는 방법에 대해서도 학습한다. 이 과정에 최근에 주목을 받고 있는 OAuth2 사용자 인증 방식을 사용하여 인증하는 방법도 구현해본다. 또한 마지막으로 주문 관리 시스템에 웹 보안을 구현하는 실습을 수행한다.
12장 마이바티스 프레임워크에서는 ORM 프레임워크는 아니지만 특별히 SQL 문을 잘 사용하는 개발자들 사이에서 인기가 많은 마이바티스 프레임워크를 사용하여 스프링 부트 프레임워크와 연동하여 데이터 액세스하는 방법에 대해 학습한다. 그리고 마지막 실습으로 마이바티스 프레임워크를 활용하여 레파지토리 컴포넌트를 구현한다.