[책 리뷰] 그림으로 배우는 스프링 6 입문

그림으로 배우는 스프링 6 입문

이번학기 수업에서 캡스톤디자인1을 수강하게 되면서 백엔드를 협업해야할 일이 생겼다.

평소에 다른 협업 프로젝트들이나 혼자 개발을 할때에는 빠르고 효율적으로 fastapi를 사용을 했었는데

같이 하는 팀원이 스프링을 활용하여 해보자고 제안해 주었고, 흥미가 생겨 공부를 시작하였다.

하지만 본래 자바도 자유자재로 다루는 언어도 아닐 뿐더러 스프링에 대한 지식이 전무한지라 이렇게 좋은 책을 찾게 되었다.

개발책들을 이것저것 읽으면서 느낀점은 가장 귀엽고 쉽게 쓰여져 있는게 제일 좋다는 것이다 ㅋㅋㅋ

내가 코딩 수업을 해보아도 어려운 내용을 어렵게 알려주는 것은 누구나 할 수 있지만 어려운 내용을 쉬워보이게 알려주는 것은 어려운 부분인 것 같다…

책소개

저자는 토키 코헤이 라는 분인데 본래 개발자가 아니었다가 후에 개발일과 교육 쪽을 하셨다고 한다

그림으로 배우는 스프링 6 입문 책은 우선 상당히 두꺼워서 당황했지만 구성을 보고 납득하게 되었다.

기본편 + 실무편 구성이라고 되어 있는데 저 부분이 상당히 마음에 들었다.

사실 이전에 김영한 강사님의 강의를 조금 들었던 적이 있는데 정말 무지한 상태로 들었기 때문에 그 내용들이 휘발되어 있었다.

하지만 위의 서평을 읽고 정말 듣고 읽는 것이랑 내가 알고 있는 지식은 다르다는 것을 깨닫고 더 흥미가 생겼던 것 같다.

목차

기본편은 주로 이론 설명을, 실무편은 좀더 자세히 개발과정에서 알아두면 좋은 점들을 설명해주는 형식인데

나는 의존성 주입에 대한 개념이 제대로 잡혀 있지 않았기 때문에 1부의 DI 부분을 읽는 것만으로 많은 도움이 되었다.

DI부분을 매우 긴 챕터에 걸쳐서 설명을 해주는데 정말 처음부터 차근차근 설명해 주는 점이 좋았다.

DI에 대해 공부한 부분은 뒤에 더 설명을 하겠다.

기초부터 매우 자세히 알려주기 때문에 JAVA를 이미 알고 있다는 가정하에 나같이 초보자도 쉽게 따라갈 수 있다.

하지만 API나 웹에 대한 더 자세한 부분들은 이미 알고 있다고 가정하에 설명하기 때문에 기초지식은 조금 필요할 듯 싶다.

자세한 그림

책 이름부터 그림으로 배우는 스프링 6 입문이기 때문에 안에 그림이 정말 많다.

도표를 활용하면 이해하고 머리속에 오래남을 수 있다는데 확실히 그런 느낌을 받았다.

이러한 간단한 객체나 클래스 관한 다이어그램도 있었고

순서도들까지 다양한 그림들이 수록되어 있어서 이해할때 도움이 많이 되었다.

코드들

거의 모든 컴퓨터 서적이라면 당연하겠지만 코드들이 자세히 수록되어 있는 부분도 있었는데

링크를 따라가면 예제코드들을 다운받아 사용할 수도 있었다.

물론 혼자서 따라해보는게 실력이 많이 늘기는 하지만 작동을 분석할 때 실행시켜보기 좋았던 것 같다.

오른쪽과 같이 각 클래스별 코드가 나와있어 헤멜것도 없었고

왼쪽아래 있는 것처럼 주석도 잘되어있어 이해는 쉬웠다.

이러니까 책이 두꺼워지는 것 같기도 하다.

실습도 있다.

부록

마지막으로 정말 맘에 들었던 부록인데 보통의 부록이면 간단하게 이론정도만 써있고, 어디 부분을 참고해라 하는 부분이 많은데

그림으로 배우는 스프링 6 입문은 부록에도 본문 못지 않게 많은 예시와 코드, 그림이 있어서

본문 모르겠네 하고 부록가서 이해되는 부분이 굉장히 많았다.

위에 JUnit도 많이 써본적이 없어서 부록을 참고했는데 직접 실습해 볼정도로 써있어서 도움이 많이 됐다.

새로 알게된 부분

스프링은 잘 몰라서 거의 모든 부분이 새로 알게된 부분이기는 하지만 중요하다고 생각되는 개념들을 정리해 보았다.

의존성 주입 (DI)

Dependency Injection(DI)는 어디서나 쓰이는 부분이고 중요한 부분인 것은 알고 있었지만 제대로된 개념을 정립하지는 못했었다.

이번기회에 DI에 대해 자세히 알아보아서 정리해 보았다.

  • 외부에서 객체를 만들어 전달함으로써 어떤 객체(테스트, 프로덕션)인지 상관이 없이 동일하게 동작하는 코드를 만드는 것이다.
  • 결국 사이에 인터페이스를 위치시킴으로써 실제 객체는 중요치 않은 상태가 되도록 하는 것
  • 결합도가 낮아지고 유연성이 좋아짐으로써 테스트 작성에도 용이해진다.

의존 객체를 외부에서 생성하고 주입하므로 이것을 Injection이라고 부르게 되는 것이다.

인터페이스를 가운데에 두고 사용한다고 얘기했는데 인터페이스를 사용하는 경우 class의 관계도는 위와 같다.

TrainingService 부분을 구현하기 위해서 Repository들을 사용하게 되는데, Jdbc와 External 두가지 경우가 있었다.

이를 같은 인터페이스를 통해 외부에서 생성하게 되면 Service 입장에서는 Jdbc인지 External인지 관계 없이 동일한 업무를 수행할 수 있게 된다.

DB이용하기

spring에서 DB를 연결하고 활용하는 방법은 몰랐는데, spring에서는 다른 External도 상관없이 데이터를 이용할 수 있더고 하더라

실제로 많은 개발자들도 그렇게 개발하고 있다는 것이 신기했다. 굉장히 좋은 것이었군…

하지만 어떤 데이터베이스 접근 방식을 사용하더라도 내부에서는 표준 JDBC를 사용하여 접근하게 된다고 한다.

jdbc코드들도 몇개 나와있어 살펴보게 되었는데, SQL 문법과 다르지 않기 때문에 무난하게 습득할 수 있었다.

다만 정수형으로 불러오는 부분이나, map으로 가져오는 부분들은 처음 보는 부분이었기 때문에 눈에 익혀두었다.

하지만 다음에 쓰려면 다시 공부를 해서 정리해 보아야 겠다는 생각이 들었다.

트랜잭션

이전에 책을 읽었을 때도 알았지만 트랜잭션 관리의 중요성을 깨달았기 때문에 이부분을 그림으로 배우는 스프링 6 입문에서 또 읽게 되었는데

@Transactional을 하면 자동으로 트랜잭션 제어가 된다는 부분이 신기했다.

다시 생각나는 auto commit의 악몽…

스프링을 할 때는 처음부터 코딩 습관을 잘 들여놔야 겠다는 생각이 들었고 그건 아래 말하는 로그까지 포함이다.

내가 로그를 잘 안찍는 습관이 있어 서버 터질 때 참 번거롭게 찾게 되더라

기타

실무 부분에서는 정말 실제 코딩에 적용할 수 있는 내용들이 많았는데 아직 개발 시작도 안한 시점에서 적용하기엔 필요성을 못느끼는 부분들도 있었다

싱글톤, 스레드 세이프한 코드들도 설명이 들어서 학교에서 들었던 자바시간에 스레드를 활용하여 프로그램을 만들었던 기억이 나는데

스레드 끼리는 전역변수를 공유하기 때문에 변수들을 로컬 변수로 선언할 필요성이 있다

나중에 적용해 보려는 자동 테스트 패턴이다.

결론

그림으로 배우는 스프링 6 입문은 처음 스프링을 시작하는 사람들도 쉽게 이해할 수 있게 설명되어 있는 책이지만

기본적인 자바지식이나 CS지식이 있어야 잘 이해할 수 있을 것 같다.

앞으로 프로젝트 개발하면서 두고두고 옆에 읽을 책이다.

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

heaven

Recent Posts

[책 리뷰] 비전공자도 배울 수 있는 타입스크립트

비전공자도 배울 수 있는 타입스크립트 자바스크립트는 이상하게 정이안가는 언어중에 하나이다. 분명 web을 처음 시작했을 때…

2개월 ago

[책 리뷰] IT 엔지니어를 위한 AWS 운영의 기본과 노하우

IT 엔지니어를 위한 AWS 운영의 기본과 노하우 선택한 이유 AWS는 정말 공부해야지 공부해야지... 하면서도 쉽게…

4개월 ago

[책 리뷰] – 소프트웨어 설계의 정석

소프트웨어 설계의 정석 누군가가 설계해 준 프로그램을 만드는 것에서 벗어나 나만의 소프트웨어를 설계하는 것의 중요성을…

4개월 ago

[책 리뷰] 개발하는 남자의 핸즈온 플러터 – 김성덕

개발하는 남자의 핸즈온 플러터 최근 계속해서 플러터를 개발할 일들이 많은데, 워낙 가지고 있는 강의들은 많은데…

5개월 ago

AI 사업계획서 독스헌트 docshunt 후기 – 초안잡을때 유용한듯!

갑자기 독스헌트 사업계획서? 아직 거창한 사업계획서를 쓸일은 없지만, 최근 진행하는 프로젝트의 지원금을 받을 수 있을까…

6개월 ago

[책 리뷰] 혼자 해도 프로처럼 잘 만드는 굿즈 제작 비법

이번에는 개발 관련 책이 아닌 특이하게 굿즈 제작 비법 책이다 혼자 해도 프로처럼 잘 만드는…

6개월 ago