내가 이 책을 만난 시점은 이미 하나의 스프링 강의와 책 한 권을 마무리한 시점이었는데, 이 책을 먼저 읽지 않은 것을 후회했기에 만약 스프링의 공부를 시작하는 사람이 있다면 이 책을 가장 먼저 읽어보는 것을 강력하게 추천한다.
스프링을 공부하려고 읽는 책의 대부분은 비슷하다.
일단 따라 해
하지만, 이 책은 다르다.
책의 첫 시작은 스프링이 아닌 프레임워크로 우리를 초대한다. 또한 단순한 설명만 하지 않고 현실 세계의 내용에 빗대어 설명하여 이해를 돕는다. 개발자들은 서로 비슷한 부분에서 비슷한 문제를 직면하고 비슷한 해결 방식을 사용하기에 프레임워크가 생겨났다고 한다. 내가 첫 장부터 이 책이 남다르다고 느낀 점이 바로 프레임워크를 도입하는 부분이다. 다른 책들은 프레임워크의 장점들을 열거하며 프레임워크로의 전환이 옳다라는 생각을 많이 심어준다. 하지만 이 책에서는 프레임워크의 도입을 하지 않는 것이 더 좋은 경우들을 설명하며 프레임워크가 만능이 아님을 알려준다. 프레임워크인 스프링을 소개, 설명하는 책에서는 보기 힘든 부분이라고 생각한다. 이렇게 책은 장점이 아닌 다각도에서 설명을 이어나간다.
스프링이라는 프레임워크는 굉장히 크고 거대하다. 코드 한 줄에도 많은 개발론과 개발 방식을 고려하여 만들어졌기에 이런 스프링을 이해하기 쉽지 않다. 그래서 일단 큰 부분에서 스프링을 대략적으로 설명하는 방식이 많은 책에서 보여진다. 반대로 이 책은 스프링의 기본 요소인 빈을 통해 우리를 스프링으로 안내한다. 스프링의 가장 기본 요소인 빈을 이용하여 스프링의 주요 구성 요소인 DI(Dependency Injection), AOP(Aspect-Oriented Programming), 그리고 POJO(Plain Old Java Object)에 대해 알려준다. 이 전에도 공부했던 내용이지만 이 책을 읽고 나서는 내가 공부를 한 것이 아니라는 생각이 들 정도로 확실하게 알게 되었다.
책의 중반부에서는 스프링을 통해 개발해본다. 하지만 아무래도 스프링이 굉장히 크고 거대하기에 많은 부분을 세세하게 설명해주지는 않는다. 데이터, REST API, 시큐리티 등 다루는 부분에서 이미 스프링을 해본 적이 있다면 쉬운 예제들을 만나게 되어 아쉬울지 모른다. 하지만 핵심적인 요소와 꼭 알아야 할 부분들에 대해서는 명확하게 짚고 넘어가며 적절한 그림과 현실 세계의 예시를 통해 이해를 돕는다. 특히 은행을 통해 같은 자원에 접근하는 과정에서 생기는 문제를 설명하는 부분이 가장 좋았다고 생각한다. 개인적으로 스프링에 대해서 잘 알고 있다고 할지라도 한번 쯤 볼만한 책이라고 생각한다.
책의 마지막에서는 테스트에 관해 설명하는데 이 책에서 가장 아쉬운 부분이라고 생각한다. 아무래도 테스트 부분이 가장 마지막에 들어가다 보니 책의 중간 개발 부분에서 작성한 코드의 테스트 코드를 작성할 기회를 놓친 게 아쉽다고 생각한다. 만약 테스트 부분에 관해서 이 책을 통해 공부하려고 한다면 앞의 예제들을 다시 작성하며 해야 할 것이다. 나 또한 책의 마지막 부분에서 테스트를 공부하기 위해 책을 2번 읽었다. 가능하다면 책의 앞부분에 테스트를 넣었다면 좋았을 거라 생각한다.
만약 스프링의 공부를 시작한다면 가장 먼저 읽어야 하는 책이라고 생각한다. 원론적이고 거시적인 이야기로 책을 풀어가는 것이 아닌 현실 세계의 예시와 작은 부분들을 붙이고 붙여가며 독자들이 스프링에 대해 명확하게 이해할 수 있도록 도와준다. 스프링의 기본 개념을 제대로 이해할 수 있다고 생각한다. 스프링의 전반적인 내용에서 꼭 알아야 하는 개념에 대해서도 잘 설명해준다. 책 한 권으로 스프링 개발 각각의 핵심적인 개념에 관해서 공부할 수 있다.
스프링의 개발에 익숙하다면 조금 아쉬울 것이다. 예제들의 난이도가 낮다. 아무래도 전반적인 내용을 다루고 기초 개념을 쌓는 것을 목표로 하기에 예제가 기초적인 내용이다. 난이도가 있는 개발 부분을 공부하고자 한다면 부족한 부분이 있다고 생각한다.
테스트 파트의 위치가 아쉽다. 책의 마지막 부분에 있기에 테스트에 대해서 공부한다면 책을 다시 읽어야 할 것이다.
한국 번역 판인 스프링 교과서 책이 있으므로 해당 책으로 보는 것이 좋다고 생각한다.