hb***
2018-02-18

그림과 표로 쉽게 배우는 스프링 4 입문서!
이 책은 실습보다는 이론 위주로 서술되어 있는 책입니다. (물론 중간에 설명들을 뒷받침해주는 예제 코드들이 실려 있기는 합니다.) 2010년대 초부터 스프링 책들이 굉장히 많이 출간되고 있는 것 같은데, 대부분의 책들이 이론보다는 실습 위주로 되어 있습니다.
사실 저는 책에 나온 내용을 차근차근 따라 쳐 가면서 배우는 스타일이라서 실습 위주로 된 책을 선호합니다. 하지만 개발을 하다 보면 이론이 부족하다는 생각이 들 때가 많이 있습니다. 이럴 때 이론서를 찾아보게 되는데, 보통 스프링 이론서로는 이일민 님의 <토비의 스프링>을 보게 됩니다. <토비의 스프링>은 3.1 기준으로 되어 있습니다. 스프링은 벌써 4가 나온지 옛날이고, <토비의 스프링>은 너무 내용이 방대하게 구성되어 있어서 읽다가 포기하게 되는 면이 있습니다. 이런 점에서 한빛미디어의 <스프링4 입문>은 스프링으로 웹 개발자 입장에서 꼭 필요한 내용만 잘 넣은 이론서라는 생각이 듭니다.
난이도 면에서 보자면, 이 책 제목에 '입문'이라는 단어가 들어가 있긴 하지만, 왕초보 입문자들이 이 책을 곧바로 이해하는 것은 무리가 있습니다. 토비의 스프링 같은 이론서와 실습 위주로 구성된 튜토리얼 책의 중간에 위치해 있다고 보면 됩니다. 이 책은 완전 초보자보다는 튜토리얼 책을 한 번씩이라도 따라해 보았거나 스프링으로 어떻게든 개발을 하고 있지만 이론적인 내용이 부족할 때 정독하면 좋을 것 같습니다.
이 책의 1장에서는 왜 스프링 프레임워크가 오늘날 주류가 되었는지 잘 설명해 놓았습니다. 과거에 써 왔던 웹 기술에 어떤 문제가 있었는지, 스프링이 그런 문제들을 어떻게 해결했는지, 스프링이 탄생한 배경과 개요가 잘 설명되어 있습니다.
2장과 3장에는 DI와 AOP의 기본 개념과 스프링에서 DI와 AOP를 어떤 식으로 지원하는지 설명되어 있습니다. 이 책에는 DI와 AOP가 무엇인지 구구절절 설명은 나오지 않기 때문에 미리 개념을 어느 정도 파악하고 있어야 합니다.
4, 5, 6장은 스프링 웹 개발에서는 빠질 수 없는 MVC에 해당하는 내용입니다. 8장은 Hibernate, JPA, MyBatis 등 다양한 ORM들을 스프링에서 어떻게 쓰는지 설명이 잘 되어 있습니다. 최소한의 내용만 읽으려면 1장부터 6장까지, 그리고 8장을 읽으면 될 것 같습니다.
이 책의 장점 중 하나는 스프링에서 사용할 수 있는 다양한 개발 방법을 소개해 놓은 것입니다. 개발 중에 무언가 인터넷에 검색해보면 활용할 수 있는 방법이 너무나 많아서, 어떤 방법이 좋은 것인지 알 수가 없습니다. 개발을 하면서도 이렇게 하는 것이 맞는 것인지 의문이 들 때가 있고 그럴 때마다 스트레스를 받게 됩니다. 단편적인 예로 Bean 정의 파일을 이용할 것인가, 애노테이션을 이용할 것인가, 아니면 JavaConfig를 이용할 것인가 고민하는 것부터가 그렇습니다. 여태까지 써 왔던 방법들 중에서 이 책을 보고 비로소 이해하게 된 것들도 많이 있습니다.
7장 스프링 시큐리티, 9장 스프링 캐시, 10장 스프링 배치는 한 번도 자세히 공부해 본 적이 없었던 부분입니다. 이 책에 설명이 잘 되어 있어서 나중에 스프링을 쓰게 된다면 유용하게 써먹을 수 있을 것 같습니다.
아쉬운 부분은 이 책의 마지막 장인 11장 클라우드 네이티브 입문 부분입니다. 이 장은 너무나도 간략하게 스프링 부트를 소개하는데 그쳐서 아쉬웠고, 뒷부분에 소개되어 있는 PWS 클라우드 이용 방법이 2015년 말부터 설명대로 되지 않는다는 주석이 달려 있는 점도 아쉬웠습니다. 책 부제에도 나오는 만큼 조금 더 내용을 보강해야 하지 않을까 싶습니다.
앞에서도 적었지만, 이 책은 스프링 튜토리얼을 끝내고 조금 더 이론적인 접근을 원하는 웹 개발자에게 추천드립니다.