확장메뉴
주요메뉴


소득공제

스프링 코딩 공작소

: 스프링 MVC로 나만의 웹 애플리케이션을 만들어 보자!

송미영 | 길벗 | 2022년 12월 22일   저자/출판사 더보기/감추기
리뷰 총점9.0 리뷰 11건 | 판매지수 864
베스트
프로그래밍 언어 top100 1주
정가
38,000
판매가
34,200 (10% 할인)
분철서비스 시작 시 알려드립니다. 분철서비스 알림신청

품목정보

품목정보
발행일 2022년 12월 22일
쪽수, 무게, 크기 552쪽 | 998g | 183*235*23mm
ISBN13 9791140702541

책소개 책소개 보이기/감추기

목차 목차 보이기/감추기

1장 스프링과 스프링 MVC

1.1 자바 플랫폼 개발 프레임워크의 대세, 스프링
__1.1.1 스프링이란?
__1.1.2 꼭 알아야 할 스프링의 주요 특징

1.2 MVC 패턴 기반의 웹 프레임워크, 스프링 MVC
__1.2.1 스프링 MVC
__1.2.2 스프링 MVC의 구성 요소

1.3 마치며

2장 스프링 MVC 개발 환경 설정과 맛보기 예제

2.1 스프링 MVC 애플리케이션 개발 환경 설정
__2.1.1 자바 설치 및 환경 설정하기
__2.1.2 웹 서버 톰캣 설치하기
__2.1.3 통합 개발 환경 이클립스 설치하기
__2.1.4 스프링 개발을 위한 STS 설치하기

2.2 첫 번째 스프링 MVC 애플리케이션 구현
__2.2.1 프로젝트 생성하기
__2.2.2 프로젝트 실행하기

2.3 마치며

3장 첫 번째 스프링 MVC 애플리케이션 분석: ‘도서 쇼핑몰’ 시작 페이지 만들기

3.1 스프링 MVC의 프로젝트 구조
__3.1.1 프로젝트 구조
__3.1.2 프로젝트 실행 과정

3.2 환경 설정 파일 살펴보기: web.xml
__3.2.1 네임 스페이스와 스키마 선언
__3.2.2 루트 컨텍스트 설정
__3.2.3 서블릿 컨텍스트 설정

3.3 스프링 MVC 환경 설정 파일
__3.3.1 루트 컨텍스트 파일 살펴보기: root-context.xml
__3.3.2 서블릿 컨텍스트 파일 살펴보기: servlet-context.xml

3.4 컨트롤러: HomeController.java

3.5 뷰: hello.jsp

3.6 메이븐 환경 설정 파일: pom.xml
__3.6.1 프로젝트 정보:
__3.6.2 속성 정보:
__3.6.3 의존성 라이브러리 정보:
__3.6.4 빌드 정보:

3.7 [실습] 도서 쇼핑몰 시작 페이지 만들기
__3.7.1 시작 페이지 만들기
__3.7.2 부트스트랩 CSS를 적용하여 시작 페이지 만들기
__3.7.3 프로젝트 실행 경로 변경

3.8 마치며

4장 스프링 MVC 애플리케이션의 계층적 구조: ‘도서 쇼핑몰’ 계층적 공통 모듈 만들기

4.1 웹 애플리케이션의 계층적 구조
__4.1.1 계층적 구조
__4.1.2 계층적 구조의 구현 과정

4.2 도서 쇼핑몰의 계층적 공통 모듈 만들기
__4.2.1 도서 쇼핑몰 애플리케이션의 계층적 구조
__4.2.2 [실습] 도서 기본 정보가 담긴 도메인 객체
__4.2.3 [실습] 도서 정보를 관리하는 퍼시스턴스 계층
__4.2.4 [실습] 요청한 도서 목록을 반환하는 서비스 계층
__4.2.5 [실습] MVC를 담당하는 프레젠테이션 계층
__4.2.6 [실습] 실행 결과 확인하기

4.3 마치며

5장 컨트롤러 구현: ‘도서 쇼핑몰’에서 도서 목록 출력하기

5.1 컨트롤러 개요
__5.1.1 컨트롤러
__5.1.2 컨트롤러 구현 과정

5.2 컨트롤러 정의
__5.2.1 @Controller를 이용한 컨트롤러 정의
__5.2.2 요소로 컨트롤러 등록
__5.2.3 [실습] @Controller로 컨트롤러를 정의하여 도서 목록 출력하기

5.3 @RequestMapping을 이용한 요청 매핑 경로 설정
__5.3.1 컨트롤러에 @RequestMapping 적용
__5.3.2 [실습] 컨트롤러에 @RequestMapping 작성하기
__5.3.3 메서드에 @RequestMapping 적용
__5.3.4 [실습] 메서드에 @RequestMapping 작성하기
__5.3.5 메서드 수준의 @RequestMapping 단순화
__5.3.6 [실습] 단순화한 @RequestMapping 사용하기

5.4 요청 처리 메서드와 모델 유형
__5.4.1 Model 인터페이스를 이용한 메서드 작성
__5.4.2 ModelMap 클래스를 이용한 메서드 작성
__5.4.3 ModelAndView 클래스를 사용한 메서드 작성
__5.4.4 [실습] ModelAndView 클래스를 사용하여 결과 반환하기

5.5 마치며

6장 요청 처리 메서드의 파라미터 유형: 다양한 조건으로 검색한 도서 목록 출력하기

6.1 경로 변수와 @PathVariable
__6.1.1 경로 변수의 개요
__6.1.2 @PathVariable을 이용한 경로 변수 처리
__6.1.3 [실습] @PathVariable을 이용하여 도서 분야와 일치하는 도서 목록 출력하기

6.2 매트릭스 변수와 @MatrixVariable
__6.2.1 매트릭스 변수의 개요
__6.2.2 @MatrixVariable을 이용한 매트릭스 변수 처리
__6.2.3 [실습] @MatrixVariable을 이용하여 매트릭스 변수 값과 일치하는 도서 목록 출력하기

6.3 요청 파라미터와 @RequestParam
__6.3.1 요청 파라미터의 개요
__6.3.2 @RequestParam을 이용한 요청 파라미터 처리
__6.3.3 [실습] @RequestParam을 이용하여 도서 ID와 일치하는 도서의 상세 정보 출력하기

6.4 마치며

7장 스프링 폼 태그: 도서 등록 페이지 만들기

7.1 스프링 폼 태그 개요
__7.1.1 스프링 폼 태그
__7.1.2 스프링 폼 태그 사용법
__7.1.3 [실습] 스프링 폼 태그로 도서 등록 페이지 만들기

7.2 @ModelAttribute를 이용한 데이터 바인딩
__7.2.1 요청 처리 메서드의 매개변수에 @ModelAttribute 적용
__7.2.2 메서드에 @ModelAttribute 적용
__7.2.3 [실습] @ModelAttribute를 이용하여 새로운 도서 등록하기

7.3 @InitBinder를 이용한 커스텀 데이터 바인딩
__7.3.1 메서드에 @InitBinder 적용
__7.3.2 폼 파라미터의 커스텀 데이터 바인딩
__7.3.3 [실습] @InitBinder를 이용하여 커스텀 데이터 바인딩하기

7.4 마치며

8장 스프링 시큐리티: 로그인/로그아웃 페이지 만들기

8.1 스프링 시큐리티 개요
__8.1.1 스프링 시큐리티
__8.1.2 스프링 시큐리티 태그

8.2 접근 권한과 사용자 권한 설정
__8.2.1 접근 권한을 설정하는 시큐리티 태그
__8.2.2 사용자 권한을 설정하는 시큐리티 태그

8.3 뷰 페이지에 사용하는 시큐리티 태그
__8.3.1 권한 태그:
__8.3.2 인증 태그:
__8.3.3 [실습] 스프링 시큐리티 태그로 도서 등록 페이지에 접근 권한 설정하기

8.4 로그인과 로그아웃 처리
__8.4.1 태그
__8.4.2 태그
__8.4.3 [실습] 스프링 시큐리티 태그로 로그인 페이지 구현하기
__8.4.4 [실습] 스프링 시큐리티 태그로 로그아웃 페이지 구현하기

8.5 마치며

9장 파일 업로드 처리: 이미지 파일 업로드하기

9.1 파일 업로드의 개요
__9.1.1 파일 업로드
__9.1.2 파일 업로드를 위한 웹 페이지

9.2 MultipartFile을 사용한 파일 업로드
__9.2.1 MultipartFile 인터페이스의 개요
__9.2.2 파일 업로드 유형
__9.2.3 [실습] 리소스를 이용한 도서 이미지 출력하기
__9.2.4 [실습] 도서 이미지 파일 업로드하기

9.3 마치며

10장 예외 처리: 도서 검색 오류에 대한 예외 처리하기

10.1 예외 처리의 개요
__10.1.1 예외 처리
__10.1.2 예외 처리 방법의 종류

10.2 @ResponseStatus를 이용한 HTTP 상태 코드 기반 예외 처리
__10.2.1 HTTP 상태 코드의 개요
__10.2.2 @ResponseStatus를 이용한 예외 처리
__10.2.3 [실습] @ResponseStatus를 이용하여 예외 처리하기

10.3 @ExceptionHandler를 이용한 컨트롤러 기반 예외 처리
__10.3.1 @ExceptionHandler를 이용한 예외 처리
__10.3.2 [실습] @ExceptionHandler를 이용하여 예외 처리하기

10.4 @ControllerAdvice를 이용한 전역 예외 처리
__10.4.1 전역 예외 처리를 위한 @ControllerAdvice
__10.4.2 [실습] @ControllerAdvice를 이용하여 예외 처리하기

10.5 마치며

11장 로그 기록: 로그 기록 만들기

11.1 Log4j 개요
__11.1.1 로깅 유틸리티 Log4j
__11.1.2 Log4j의 구조와 로깅 레벨
__11.1.3 로그 환경 설정 파일의 구성

11.2 인터셉터 개요
__11.2.1 인터셉터
__11.2.2 인터셉터 등록

11.3 인터셉터를 이용한 로그 기록
__11.3.1 HandlerInterceptor를 이용한 로그 기록
__11.3.2 [실습] HandlerInterceptor를 사용하여 로그 기록하기
__11.3.3 [실습] 파일로 로그 기록 출력하기
__11.3.4 HandlerInterceptorAdapter를 사용한 로그 기록
__11.3.5 [실습] HandlerInterceptorAdapter를 사용하여 로그 기록하기

11.4 마치며

12장 다국어 처리: 도서 등록 페이지에서 다국어 페이지 만들기

12.1 다국어 처리의 개요

12.2 MessageSource를 이용한 다국어 처리
__12.2.1 메시지 리소스 파일 작성
__12.2.2 MessageSource 환경 설정
__12.2.3 뷰 페이지에 메시지 출력
__12.2.4 [실습] MessageSource를 이용하여 다국어 처리하기

12.3 LocaleResolver와 LocaleChangeInterceptor를 이용한 다국어 변경
__12.3.1 LocaleResolver 환경 설정
__12.3.2 LocaleChangeInterceptor를 이용한 로케일 변경
__12.3.3 [실습] LocaleResolver와 LocaleChangeInterceptor를 이용하여 다국어 변경하기

12.4 마치며

13장 유효성 검사: 도서 등록 페이지의 오류 메시지출력하기

13.1 유효성 검사의 개요
__13.1.1 유효성 검사의 유형
__13.1.2 @Valid를 이용한 유효성 검사

13.2 JSR-380으로 유효성 검사
__13.2.1 JSR-380 애너테이션 선언
__13.2.2 @Valid를 이용한 유효성 검사
__13.2.3 태그로 오류 메시지 출력
__13.2.4 [실습] JSR-380을 이용하여 유효성 검사하기

13.3 사용자 정의 애너테이션으로 유효성 검사
__13.3.1 사용자 정의 애너테이션 생성
__13.3.2 ConstraintValidator 인터페이스의 구현체 생성
__13.3.3 [실습] 사용자 정의 애너테이션을 이용하여 유효성 검사하기

13.4 Validator 인터페이스로 유효성 검사
__13.4.1 유효성 검사 과정
__13.4.2 Validator 인터페이스의 구현체 생성
__13.4.3 @InitBinder를 선언한 메서드 추가
__13.4.4 [실습] Validator 인터페이스를 사용하여 유효성 검사하기
__13.4.5 [실습] Validator 인터페이스와 JSR-380을 연동해서 유효성 검사하기

13.5 마치며

14장 RESTful 웹 서비스: 장바구니 페이지 만들기

14.1 RESTful 웹 서비스의 개요

14.2 RESTful 방식의 애너테이션
__14.2.1 @RequestBody
__14.2.2 @ResponseBody
__14.2.3 @RestController
__14.2.4 [실습] RESTful 방식의 장바구니 기본 구조 만들기

14.3 RESTful 웹 서비스의 CRUD
__14.3.1 [실습] RESTful 웹 서비스를 위한 장바구니 CRUD 만들기

14.4 마치며

15장 스프링 웹 플로우: 주문 처리 페이지 만들기

15.1 웹 플로우의 개요
__15.1.1 스프링 웹 플로우
__15.1.2 스프링 웹 플로우의 특징
__15.1.3 [실습] 웹 플로우를 적용하는 주문 처리의 기본 구조 만들기

15.2 웹 플로우와 MVC 연동을 위한 환경 설정
__15.2.1 스프링 웹 플로우 환경 설정
__15.2.2 스프링 MVC 환경 설정
__15.2.3 [실습] 웹 플로우 적용을 위한 환경 설정하기

15.3 웹 플로우 구성 요소
__15.3.1 요소
__15.3.2 요소
__15.3.3 요소
__15.3.4 요소
__15.3.5 요소
__15.3.6 요소
__15.3.7 요소
__15.3.8 [실습] 주문 처리를 위한 웹 플로우 정의 파일 만들기
__15.3.9 [실습] 주문 처리를 위한 웹 플로우 페이지 작성하기

15.4 마치며

16장 타일즈: 웹 페이지 모듈화하기

16.1 타일즈 개요
__16.1.1 타일즈
__16.1.2 pom.xml 파일에 의존 라이브러리 등록
__16.1.3 servlet-context.xml 파일에 타일즈 환경 설정
__16.1.4 [실습] 타일즈 적용을 위한 환경 설정하기

16.2 타일즈 레이아웃 정의
__16.2.1 기본 레이아웃 정의
__16.2.2 타일즈 레이아웃 정의 파일 만들기
__16.2.3 타일즈 레이아웃 페이지 만들기
__16.2.4 [실습] 타일즈 레이아웃 정의하기

16.3 타일즈와 웹 플로우 연동
__16.3.1 FlowBuilder 서비스 설정
__16.3.2 ViewResolver 빈 등록
__16.3.3 [실습] 스프링 웹 플로우에 타일즈 연동하기

16.4 마치며

17장 데이터베이스 연동: 도서 목록 CRUD 처리하기

17.1 데이터베이스 설치
__17.1.1 MySQL 설치
__17.1.2 MySQL 기본 명령어
__17.1.3 [실습] 데이터베이스와 테이블 생성 및 데이터 등록하기

17.2 JDBC 연동을 위한 환경 설정
__17.2.1 pom.xml 파일에 의존 라이브러리 등록
__17.2.2 servlet-context.xml에 데이터베이스 환경 설정
__17.2.3 [실습] JDBC 연동을 위한 환경 설정하기

17.3 데이터 검색
__17.3.1 queryForObject() 메서드
__17.3.2 queryForList() 메서드
__17.3.3 query() 메서드
__17.3.4 [실습] CRUD 메서드를 사용하여 도서 목록 조회하기

17.4 데이터 삽입, 수정, 삭제
__17.4.1 삽입, 수정, 삭제
__17.4.2 [실습] CRUD 메서드를 사용하여 신규 도서 삽입하기
__17.4.3 [실습] CRUD 메서드를 사용하여 도서 정보 수정하기
__17.4.4 [실습] CRUD 메서드를 사용하여 도서 삭제하기

17.5 마치며

저자 소개 (1명)

책 속으로 책속으로 보이기/감추기

책은 최신 스프링 버전을 기반으로 스프링 MVC의 기본 원리와 개념을 먼저 살펴보고 간단한 예제로 개념 이해도를 높입니다. 그리고 학습한 개념이 웹 애플리케이션 개발에 어떻게 적용되는지 파악할 수 있도록 웹 쇼핑몰을 직접 구축하는 실습도 구성했습니다. 이 쇼핑몰 예제에서 부트스트랩 프레임워크 CSS를 적용한 반응형으로 타일즈, 웹 플로우, 스프링 보안 등 웹 애플리케이션 개발에 필요한 다양한 기능을 구현합니다. 여기에 웹 프로그래밍에서 필요한 회원 가입, 공지 사항, 자유 게시판, 자료실, 방명록, 설문 조사 등 데이터베이스와 연동된 소스를 별도로 제공합니다. 따라서 이 책으로 스프링 기본 개념과 일반적인 웹 애플리케이션 아키텍처인 MVC는 물론, 스프링 MVC 프레임워크의 원리를 이해할 수 있습니다. 또한 단계별로 쇼핑몰을 구축하면서 스프링 MVC를 처음 접하거나 경험이 많지 않은 독자에게는 이 책이 전반적이고 깊이 있는 스프링 MVC 지식을 얻을 수 있는 가이드가 될 수 있을 것입니다.
---「지은이의 말」중에서

출판사 리뷰 출판사 리뷰 보이기/감추기

스프링 MVC 구조부터 웹 프로젝트 제작까지
완벽히 이해하고 구현한다!

웹 애플리케이션 제작 과정을 그대로 담았다!


‘MVC 구조와 공통 모듈 만들기 → 기본 기능 구현하기 → 고급 기능 구현하기’ 단계에 맞춰 웹 애플리케이션의 제작 과정을 시작부터 끝까지 담았다. 그대로 따라 하며 진행할 수 있게 구성했으며, 책을 따라 실습하다 보면 모든 과정을 자연스레 익힐 수 있을 것이다.

스프링의 다양한 기능을 배우자!

프로젝트를 진행하며 MultipartFile, RESTful 웹 서비스, 스프링 웹 플로 등 스프링의 다양한 기능도 함께 설명한다. 또한, 로그 기록 만들기, 다국어 페이지 만들기, 유효성 검사하기, 데이터베이스와 연동하여 CRUD 처리하기까지 직접 구현하면서 스프링을 좀 더 깊이 이해하고 활용할 수 있다.

3단계로 학습한다!

스프링을 처음 배우는 독자도 학습할 수 있도록 장마다 개념을 설명한 후 기본 예제로 사용법을 익히고, 앞에서 배운 개념을 반영해 웹 애플리케이션에 직접 적용해 볼 수 있도록 구성했다. ‘개념 설명 → 기본 예제 → 실습’ 단계로 구성하여 스프링에 익숙하지 않은 독자가 반복하여 학습할 수 있게 도와준다.

[베타테스터 후기]

애플리케이션을 MVC 패턴으로 구성하여 Model, View, Controller의 역할을 명확히 나누어 수행하는 내용을 학습할 수 있었습니다. 또한 log4j.xml 파일의 설정 시작부터 라이브러리 사이의 의존성 관리도 배울 수 있어 좋았습니다. 스프링을 빠르게 익히고 싶다면 이 책으로 도움을 얻을 수 있을 것입니다.
-이승표 | 게임 서버 프로그래머

서비스 규모가 커지면 스프링으로 바꾸는 경우가 많습니다. 스프링 생태계 자료가 풍부하고 시스템이 안정적이기 때문이죠. 이 책은 스프링 MVC를 활용하여 도서 쇼핑몰을 만듭니다. 윈도 기반에서 이클립스를 활용하여 구축하지만 저는 Mac과 인텔리제이를 사용해서 실습을 진행했습니다. 실습하는 데 특별히 문제는 없었고 톰캣과 filepath 설정 등만 바꾸어서 진행했습니다. 책은 시작부터 스프링을 설명하기 때문에 자바 언어 공부는 따로 해야 합니다. 스프링 MVC 핵심 로직도 친절하게 설명하기 때문에 전반적인 개념을 잡는 데 좋습니다.
-황시연 | 백엔드 개발자

개발 시작 전 핵심 스프링 개념을 설명하고 한 번 더 복습할 수 있도록 구성되어 있습니다. 개발에 대한 이해가 높아지도록 책 구성을 만들었다는 점에서 매우 좋았으며, 독자로서 공부하기도 쉬웠습니다. 또한 3년 차 개발자로서 누가 설정해 놓은 개발 환경에 그저 코드만 짜기 일쑤였는데, 이 책을 보면서 개발 환경의 이 코드는 어떤 역할을 하는지, 왜 필요한지 등을 알게 되어 스프링 원리를 깊게 이해할 수 있었습니다. 갓 입사한 신입보다는 저처럼 개발 경력은 조금 있지만 정확하게 원리를 이해하고 싶거나, 처음부터 끝까지 프로그램을 만들고 싶은 사람에게 좋은 길잡이가 될 것입니다. 특히 실습을 따라가다 보면 놓칠 수 있는 내용을 세세하게 설명하고 있어 오류가 발생할 상황을 많이 줄여 주는 것 같습니다. 주니어 개발자에게 추천하고 싶습니다.
-강솔 | 자이트솔루션

이 책은 스프링 MVC로 스프링 프레임워크에서 지원되는 다양한 기술(스프링 폼 태그, 스프링 시큐리티, 파일 업로드, 예외 처리, 로그 기록, 다국어 처리, 유효성 검사, RESTful, spring-webflow, tiles, 데이터베이스 연동)을 사용하여 도서 쇼핑몰을 단계별로 구현해 나가는 것에 중점을 둡니다.

스프링 프레임워크는 XML 설정이 매우 중요한데, XML 설정에 상당 부분을 할애하여 XML 설정에 대한 이해를 도와줍니다. 스프링 부트를 사용하지 않는 순수 스프링 프레임워크는 간편 설정을 제공하지 않기 때문에 필요한 라이브러리를 pom.xml에 모두 추가하여 개발 환경을 구성해야 합니다. 직접 라이브러리 사이의 의존 관계는 물론 버전별 호환성도 세세하게 신경 써야 합니다. 그렇게 하지 않으면 라이브러리 사이의 의존 관계가 꼬이거나 호환성 문제로 빌드되지 않거나 애플리케이션이 비정상적으로 동작할 수 있습니다. 또한 스프링 프레임워크를 사용하는 데 필요한 설정들은 XML 기반으로 servlet-context.xml, root-context.xml, security-context.xml, web.xml 등 XML 설정 파일을 직접 설정해야 합니다. 톰캣도 내장된 톰캣이 없으므로 직접 톰캣을 내려받아 환경 설정에 추가하고 해당 톰캣으로 빌드된 WAR 파일로 구동되도록 설정해야 합니다.

이렇듯 불편함을 감수하면서 개발해야 하지만, 그동안 스프링 부트의 편리함과 익숙함에 묻혀 스프링 프레임워크에 대해 잘 몰랐던 부분들을 직접 설정하고 경험하면서 많은 부분을 알 수 있었습니다. 스프링 부트로 개발할 때보다 신경 써야 할 부분이 매우 많지만, 스프링 MVC로 처음 개발하는 사람에게는 스프링 프레임워크를 더 깊이 이해할 수 있는 기회가 될 것입니다.
-권민승 | 백엔드 개발자

회원리뷰 (11건) 리뷰 총점9.0

혜택 및 유의사항?
포토리뷰 스프링 프레임워크 책은 실습으로 개념을 익혀야 효과가 있다. 내용 평점5점   편집/디자인 평점5점 YES마니아 : 골드 j****e | 2023.04.13 | 추천0 | 댓글0 리뷰제목
스프링 프레임워크를 사용한 웹 어플리케이션을 유지보수하는 일을 하고 있다. 스프링 프레임워크는 현재 스프링 부트 이후 많은 부분을 자동화하여 오픈소스 및 웹 어플리케이션을 손쉽게 개발하는 것에 일조하고 있다. 그러나 기존에 만들어진 스프링 기반의 웹 어플리케이션들은 3.X, 4.X 버전으로 개발된 것이 꽤 많고 자동화된 부분보다는 스프링 기본 프로세스를 이해하기 전에는;
리뷰제목
스프링 프레임워크를 사용한 웹 어플리케이션을 유지보수하는 일을 하고 있다. 스프링 프레임워크는 현재 스프링 부트 이후 많은 부분을 자동화하여 오픈소스 및 웹 어플리케이션을 손쉽게 개발하는 것에 일조하고 있다. 그러나 기존에 만들어진 스프링 기반의 웹 어플리케이션들은 3.X, 4.X 버전으로 개발된 것이 꽤 많고 자동화된 부분보다는 스프링 기본 프로세스를 이해하기 전에는 손쉽게 유지보수할 수 없는 부분이 있다. 그래서 이번에 보게 된 ‘스프링 코딩 공작소’ 책은 스프링 부트 이전의 스프링을 잘 설명하고 있다. 목차를 단순하게 정리해보니 실습이 각 단원마다 포함되어 개념을 단순히 이해하는 차원을 넘어 체득하도록 돕고 있다.

스프링 프레임워크를 설명한 책들을 보면 너무 두껍거나, 기존 ‘~ 인 액션’ 시리즈들은 개정판을 낼 때마다 많은 부분이 변경되어 혼란스럽기까지 하다. 본인은 1판부터 5판 개정판까지 모두 확인하면서 스프링 프레임워크를 공부하고 있다. 그러나 이 책은 너무 질리지 않는 두께와 꼭 필요한 설명 실습을 곁들여 스프링에 친숙해지는 것에 초점을 두었다는 표현이 어울린다. 스프링 - 스프링 MVC - 구조 - 실행과정 - 계층적 공통 모듈 - 컨트롤러 - 파라미터 유형, 폼 태그, 그 이후에는 각 개념 설명과 실습들 - 스프링 시큐리티, 파일 업로드 처리, 예외 처리, 로그 기록, 다국어 처리, 유효성 검사, RESTful 웹서비스, 스프링 웹플로우, 타일즈, 데이터베이스 연동. 각 단원마다 실습을 차근차근 따라하다 보면 큰 그림을 그릴 수 있고, 더 깊이 스프링을 이해하는 초석을 마련할 수 있을 것으로 보인다.

도서 쇼핑몰을 만들다 보면, 적지않게 책에 기록되지 않은 아이디어들도 떠오른다. 새로운 아이디어를 책을 통해 구현할 수 없지만, 고민하고, 코딩하다 보면 부쩍 실력이 늘어날 수 있을 것이다. 이 책에서 장점은 기본에 충실하다는 것이고, 저자의 경력을 따라 학생들을 지도하고 실무 경험을 바탕으로 쓰여졌기 때문에 스프링 프레임워크를 이해하는 데 어떻게 설명을 해야 이해하기 쉬운지 잘 알고 책을 집필한 것 같다.

* 길벗출판사로부터 책을 지원받아 쓴 글입니다.




이 리뷰가 도움이 되었나요? 공감 0 댓글 0
스프링 코딩 공작소 내용 평점5점   편집/디자인 평점5점 k*******9 | 2023.04.01 | 추천0 | 댓글0 리뷰제목
  스프링 코딩 공작소 출판사 : 길벗, 송미영 지음   오래간만에 스프링 입문 관련 서적을 살펴볼 예정이다. 길벗 출판사의 서평단에 응모해 운좋게 담첨 되었고, 좋은 책을 읽어 볼 수 있는 기회를 얻었기 때문이다.   시중에는 이미 꽤 많은 스프링 관련 서적이 나와있다. 하지만 내가 이 책을 택한 이유는 조금 다르다. 동일한 기술이라도 그 책을 집필하는;
리뷰제목

 

스프링 코딩 공작소

출판사 : 길벗, 송미영 지음

 

오래간만에 스프링 입문 관련 서적을 살펴볼 예정이다.

길벗 출판사의 서평단에 응모해 운좋게 담첨 되었고, 좋은 책을 읽어 볼 수 있는 기회를 얻었기 때문이다.

 

시중에는 이미 꽤 많은 스프링 관련 서적이 나와있다. 하지만 내가 이 책을 택한 이유는 조금 다르다.

동일한 기술이라도 그 책을 집필하는 저자의 관점에 따라 책에서 중요하게 다루어지는 부분이 조금씩 달라지는데.

난 이 책에서 그 다른 점을 보았기 때문이다.

이 책에서는  '스프링 웹 플로우'와 '아파치 타일즈'를 다루었다는 점이다.

사실 '스프링 웹 플로우'는 처음 들어 보았다.

(들어는 보았지만  사용한 적이 한 번도 없었기 때문에 잊어 버렸을 가능성도 있다.)

'타일즈'는 예전에 많이 사용했지만 현재는 최근에는 거의 써보지 않아서 잊고 지내고 있었다.

특히, '타일즈'를 다루는 도서가 없었기 때문에 공식 홈페이지나 포스팅을 통해 정리된 내용을 접하는 것 말고는

제대로 공부해 본적이 없었기 때문에 이 책의 차별성은 더욱 뚜렷하다.

 

각설하고 이 책의 살펴보자.

우선 이 책의 대상은 스프링으로 일을 처음 시작하는 개발자, 그리고 공부하려고 하는 학생이 보기에 좋을것 같다.

스프링에 대한 개념과 스프링을 이용한 시작과 끝이라고 할 수 있는 환경설정에 대해서

너무 깊게도, 그렇다고 너무 띄엄띄엄 다루지 않고 적당한 선을 잘 지키고 있다고 생각되기 때문이다.

('스프링부트'가 왜 나왔는지 알고 있는가? 스프링의 설정이 얼마나 귀찮고 어렵운 일인지 그것을 더 간편하고 최소화 하기 위해서이다.)

 

1~2장은 스프링에 대한 간단한 설명과 함께 개발을 시작하기 위한 설정 작업이다.

따라서 편안한 마음으로 읽고 넘어가자.

 

3장부터는 슬슬 스프링을 이용한 개발의 재미를 맛 볼 수 있는 장이 시작된다.

프레임워크 라는 것은 이미 누군가 어떠한 목적을 위해 만들어 놓은 뼈대이기 때문에 그 구조를 제대로 파악하고,

목적에 맞게 살(비즈니스 로직)을 붙이는 것이 중요한데, 3장에서 스프링 MVC의 구조를 다루는 것으로 시작하고 있다.

스프링을 구조적으로 지탱하고 있는 여러 가지 설정 파일에 대해서 딱 필요한 만큼 설명하고 있다.

 

4장은 갑자기 놀랄 수도 있다. 단숨에 아주 깊은 곳까지 들어갔다가 나온다.

예제 프로그램을 짜기위해 가장 기본적인 모듈을 만들어 놓기 위해서 이다.

여기서 이제 다른 책과 또 다른 조금 차별화되는 부분이 있는데

다른 서적에서는 보통 이 쯤에서 데이터베이스 설치와 설정을 다룬다.

하지만 이 책에서 데이터베이스는 가장 마지막 장에 다룬다.

그럼 예제를 위해 읽어와야 할 데이터는 어떻게 처리 할까?

그 내용을 4장 Repository에서 임시로 데이터 객체를 만들어 사용하게 된다.

 

5~6장은 4장에서 만들어 놓은 모듈을 따라가며 조금씩 살을 붙인다.

각각의 페이지가 찾아가야 할 경로에 대한 설정과 그것을 검색을 위해 파라미터를 넘기는 다양한 설정 방법을 익힐 수 있다.

 

7장은 도서를 직접 등록할 수 있는 페이지를 직접 만들어 볼 수 있고, 여기에서 JSP를 이용해 화면을 개발한다면

절대 빼놓을 수 없는 '스프링 폼 태그'에 대해서 배울 수 있다.

물론 5-6장의 목록을 출력하기 위해서는 반드시 JSTL을 사용해야 한다.

하지만 5-6 장의 중요 내용은 서버측의 구현에 있다면

7장은 클라이언트쪽에서 서버쪽으로 데이터를 보내기 위해 해야 할 작업에 좀 더 중점을 두고 있다는 것이다.

여러 가지 데이터를 어떻게 구조적으로 서버로 보낼 수 있는지, 기본적인 방법과 개발자가 상황에 맞게 처리하여 보낼 수 있는 방법(커스텀)을 배우게 된다.

 

사실 7장까지만 하면 공부를 막 시작한 학생이나, 막 입사하여 개발을 시작한 신입 개발자들은 충분한 내용일 것이다.

8장은 어려운 부분이다. 권한과 인증, 보안을 다루는 부분이기 때문인다.

스프링에서는 이것을 '스프링 시큐리티' 라는 별도의 프레임워크를 제공하는데,

머리말에 '스프링' 이라는 말이 붙은 것처럼 '스프링 프레임워크'와 잘 어울린다.

이 내용이 책의 전반부 보다는 후반부에 나올 만한 내용이라고 생각된다. (내 주관적인 생각이다.)

 

9장은 파일 업로드 부분이다.

이 부분은 게시글 쓰기와 같이 있어야 하지 않을까 하는 부분이다.

 

10장. 중요한 부분이다.!!

예외처리에 대한 부분이다. 일을 하다 보면 예외처리를 제대로 안하는 개발자들을 많이 있다.

나도 그럴 때가 많다. 귀찮다.

'설마 사용자가 이렇게 쓸까? 에이~ 이렇게는 안쓰겠지? 바보도 아니고..'

 

하지만 사용자들은 실제로 그렇게 쓰는 경우가 많고 테스트 도중에 시스템은 먹통이 되어 버린다.

따라서 예외처리 반드시 잘 알고 넘어가야 한다. 

 

11장은 기록에 대한 이야기다. 어떤 문제가 생겼는지를 파악하기 위해 로그를 잘 남겨 두어야 한다.

로그를 남기는 방법에는 여러 가지 방법이 있고, 여러 가지 라이브러리가 존재한다.

여기서는 log4j를 사용한다.

설명이 잘 되어 있다. 이전에 미쳐 깨닫지 못했던 내용을 이 책을 보면서 깨달은 부분이 있다.

고맙다. 정말 감사한다.

(그리고 서평단에 뽑아주신 관계자 분께도 감사 드린다. 서평을 쓰기 위해 책을 보지 않았다면 깨달음을 얻지 못했을 것이다.)

 

12장은 다국어 지원을 위한 내용이다.

서비스가 아직 국내 한정이라면 나중에 봐도 무방하다.

 

13장.. 이 장 역시 앞쪽 글 쓰기와 함께 있어야 할 내용이다.

등록 하려는 데이터에 대한 유효성을 검사하는 부분이기 때문이다.

하지만 이 부분은 또 다른 의미로 상당히 중요한 의미를 갖고 있기 때문에 후반부에 다루는 것이 맞을 수도 있다는 생각이 든다.

이유는 JPA를 사용하기 위해 도메인 관련 설정과 연관이 깊기 때문이다.

따라서 서비스를 나중에 더욱 확장하여 JPA까지 적용할 계획이라면, 이 책에 이 내용이 있다는 것을 잊지 말자.

(지금 꼭 봐둬야 할 필요는 없다. 어차피 금방 다 까먹는다. 잊지만 말자. 이 책에 이 내용이 있다는 것을.. 유효성 검사는 다른 방법으로도 충분히 할 수 있다)

 

14장은 RESTful 서비스 적용하는 방법이다.

공공데이터(Open API) 또는 타기관과 데이터를 주고 받는  시스템을 개발한다면 반드시 필요한 장이다.

뿐만 아니라 요즘은 리엑트나 Vue.js 등과 같은 자바스크립트 프레임워크를 이용해 화면을 개발 하거나

모바일을 이용한 서비스 개발에서는 거의 Rest 방식을 사용하기 때문에 반드시 알고 있어야 한다.

하지만 너무 겁먹을 필요는 없다. 이미 스프링에서는 그 부분까지 아주 쉽게 처리 할 수 있도록 우리를 배려(?)하고 있기 때문에

이 책을 통해 충분히 학습 할 수 있을 것이다.

 

15장은 스프링 웹 플로우에 대한 내용이다.

사실 나도 이 내용은 처음이다. 간략하게 설명하자면 서비스의 흐름을 미리 어딘가에 정의해 놓아 유지관리를 편의성을 높이는 전략이라 볼 수 있겠다.

 

16장은 아파치 타일즈에 대한 내용이다.

반복되는 레이아웃을 미리 정의해 놓고 개발자는 비즈니스 처리 부분에 더 집중할 수 있도록 도와주는 라이브러리이다.

헤더나 풋터, 메뉴 같이 메 페이지에 계속 동일한 코드가 들어가는 것을 따로 분리해 관리 할 수 있도록 도와주는 라이브러리를 학습 할 수 있다.

 

17장. 마지막이다.

처음에 말했듯이 마지막은 DB설정에 대한 내용이다.

사실 좀 의아한 부분이다. 이게 왜 가장 마지막에 있는지 말이다.

(아니면 나도 기존의 스프링 도서들에 익숙해져 DB 설정이 앞에 있는게 당연하다고 받아들이는 꼰대가 된 것은 아닐까?)

그 이유에 대해 몇 가지 변명을 해보자면 테스트와 관련이 깊다.

나중에 이 책의 아쉬운 부분에 대해서 다시 이야기 해보겠지만 개발의 시작은 데이터이다.

즉 데이터의 관리에서 부터 시작이다. 

적절한 도메인의 관리는 향후 프로젝트의 난이도에 직접적인 영향을 미치는데

이 부분을 테스트를 통해서 사전에 상당 부분 해소 할 수 있기 때문이다.

목표로 하는 독자층과 난이도를 고려하여 해당 내용을 생략하고 DB관련 부분을 뒤쪽에 배치 하였다면

꼭 나쁜 전략은 아니라고 생각된다. (하지만 개인적으로 아쉬운 부분이다.)

 

전체적인 책의 내용을 간략히, 그리고 지극히 개인적인 시점으로 적어 보았다.

그리고 지극히 주관적인 관점에서 아쉬운 내용을 몇 자 적어보면서 이 책의 리뷰를 마쳐본다.

 

우선 테스트에 대한 내용이 없다.

TDD에 대해서는 많이들 들어 보았을 거라고 생각한다. Junit 테스트는 요즘의 트랜드다.

개발자의 시간을 절약해 준다. 절약된 시간은 서비스의 품질로 이어진다.

화면이 나오기 전이나 아파치 톰캣이 구동되지 않은 상태에서 서버쪽의 테스트를 할 수 있다는 것은

무시할 수 없는 이점이다. (톰캣 서버 올리고 내리는 시간도 아깝다!)

테스트를 꼭 assertThat 같은 것을 사용하여 정석적인(?) 방법으로 하지 않아도 된다. 나도 야매로 테스트 한다.

assertThat 안쓰고 실제로 데이터가 원하는 대로 나오는지만 확인 하면 된다. 

그렇기에 테스트는 중요한다.

 

두번째는 RESTful 서비스를 다루면서 해당 서비스를 테스트 하는 방법이 소개되지 않은 것이 아쉽다.

많이 쓰는 서비스로 포스트맨(Postman)이 있다. 단순히 서버가 제대로 동작 하는지 확인 하는 것을 넘어

가상의 서버를 구축 함으로써 서버가 없는 상태에서도 화면 테스트가 가능하다.

(이건 프론트/서버 개발자의 룰이 명확하여 서로 개발되기 만을 기다리는 상황에서는 반드시 필요하다.) 

 

마지막으로 

요즘 많이 쓴다는 intellij를 통한 설정이 있었으면 좋겠는데 없다.

IDE는 도구일 뿐이다. 연장은 손에 익은 것이 최고다. 고수는 연장 탓을 해도 된다.

(연장은 고수의 생산성과 직결된다.)

이클립스가 편하면 이클립스를 쓰면 될 것이고 intellij가 좋으면 intellij 로 작업하면 된다.

(intellij가 유료인건 공공연한 비밀이다. 유료인지 모르는 사람이 생각보다 많더라.)

따라서 책 초반에 이클립스를 가지고 프로젝트를 생성했던 것처럼, intellij 로 작업 할 수 있도록 같이 설명이 있으면 좋지 않았을까 싶다.

조금 더 깊이 나간다면

한 프로젝트에서 이클립스와 Intellij를 같이 쓸 수 있도록 버전관리(git, svn 등)에 대한 설정이 있었으면 정말 좋지 않았을까?

(이건 개인적으로 정말 궁금한 내용이라 적어봤다.)

 

길벗에서 도서를 지원받아 작성한 리뷰(포스팅)입니다.
이 리뷰가 도움이 되었나요? 공감 0 댓글 0
스프링 코딩 공작소 내용 평점5점   편집/디자인 평점5점 h*****9 | 2023.03.27 | 추천0 | 댓글0 리뷰제목
현업에서 스프링과 부트스트랩으로 UI 초기구성부터 DB 구조를 새롭게 구성하고 있는데, 커머스 계열이 아니다보니 쇼핑몰 관련된 개인 프로젝트를 하고 싶은 마음을 가지고 있었습니다.  MVC 패턴과 더불어 스프링 강의를 병행하고 있지만, 전체적인 구조와 원리를 파악하는 것은 역시 정적인 도서 매체를 통해 지속적으로 눈으로 보면서 익히는게 제 학습 스타일에 맞았던;
리뷰제목

현업에서 스프링과 부트스트랩으로 UI 초기구성부터 DB 구조를 새롭게 구성하고 있는데, 커머스 계열이 아니다보니 쇼핑몰 관련된 개인 프로젝트를 하고 싶은 마음을 가지고 있었습니다. 

MVC 패턴과 더불어 스프링 강의를 병행하고 있지만, 전체적인 구조와 원리를 파악하는 것은 역시 정적인 도서 매체를 통해 지속적으로 눈으로 보면서 익히는게 제 학습 스타일에 맞았던 것 같습니다.

이 책의 장점은 그림으로 MVC 구조를 한눈에 파악하기 수월했고, 개발 초기 세팅부터 차근차근 직접 코딩하면서 익히고, 최종적으로 쇼핑몰 프로젝트를 내 손으로 구축할 수 있다는 것입니다.

현재 회사에서는 주로 백오피스 작업과 부트스트랩으로 초기 UI 기획 및 구현을 하고 있는데, 그야말로 맨 땅에 헤딩하면서 구현해내기에만 급급했고, 아직 스프링 MVC 구조와 프로젝트를 완벽히 이해하는데 한계를 가지고 있었습니다.

위 도서를 통해 라이브러리 사이간 의존 관계와 버전별 호환성 등의 개발의 세세한 부분까지 신경써서 개념과 이해를 돕고 있기 때문에 개발 세팅하는 부분에 있어서 큰 어려움은 없었습니다. 그리고, 많은 프로젝트를 경험해보지 못한 저로써는 여러 예제와 그림으로 실습해보고, 복습할 수 있도록 구성해놓은 부분에 대해서도 만족감이 매우 좋았습니다.

개발 환경부분에 있어서 집에서는 Mac, 회사에서는 Window, 인텔리제이를 사용해 실습을 진행해보았는데 개발 세팅과 프로젝트를 진행함에 있어서도 톰캣과 filepath 설정 등만 바꿔서 진행하는데 막힘이 없었습니다. 전반적인 스프링의 설명과 핵심 로직을 설명하고 있기 때문에 강의와 개인적으로 학습을 병행해야되는 부분은 반드시 이루어져야 학습 시너지가 높아질 것으로 보입니다.

 

이 글은 길벗으로 부터 책을 증정받아 작성되었습니다.

이 리뷰가 도움이 되었나요? 공감 0 댓글 0
  •  쿠폰은 결제 시 적용해 주세요.
1   34,200
뒤로 앞으로 맨위로 공유하기