본문 바로가기
Korean/Spring Study

토비의 스프링 1장 | 스프링 개발하려면 토비의 스프링을 꼭 사야할까?

by 나리일 2022. 1. 22.

스프링 개발을 구글 서칭 + 책의 필요한 부분만 쏙쏙 빼읽기로 하다보니 조금 야매 개발같아서

스프링의 정석으로 불리는 [토비의 스프링]의 Vol 1과 2를 1장부터 정독하기로 했다. 

생각보다 각잡고 정리하면서 읽기보다는 편하게 이해하면서 읽을수 있는 쉽게 쓰인 책이다.

 

명작으로 칭송받는 책이긴 하지만 그래도 오래된 책이고, 무엇보다 양도 너무 많고 비싸서 다른 책을 샀었는데

나도 돌아돌아 토비의 스프링을 결국 정독하기로 한 만큼, 

구입을 망설이는 사람들이 이 글을 보고 '나에게 필요한 책인가' 의심해볼수있었으면 좋겠다.

어처피 안읽을거면 안사는게 좋다고 생각해서... 마음이 앞서는 초보 개발자들 책장에 도대체 두껍고 무거운 책이 얼마나 쌓여있을지 안다^^

 

각 장의 내용을 간략하게 정리하고, 소개된 개념들을 #해쉬태그로 달 생각이다. 

각 해쉬태그를 클릭하면 그 개념을 정리해 놓은 게시글로 이동한다.

 

 

토비의 스프링 Vol.1

 

1장. 오브젝트와 의존관계

 

1.1~1.3 ApplicationContext가 그래서 뭔데........

다른 책에서는 그냥 처음에 ApplicationContext context = new ~~~~~;가 나와서

'그래서 이게 뭔데......그냥 따라하면 되는거?' 싶었다면

이 책은 그 코드가 나오게 된 이유부터 차근차근 설명해준다.

 

처음에는 간단한 UserDao 클래스에 디비를 연결하는 예제 코드를 가지고 시작한다.

(이 코드는 뒷부분까지 계속 언급되니 앞에서 잘 이해해놓도록 하자)

아주 원시적인 '초난감 DAO'를 만들어서 하나하나씩 분리&조합해가며 코드를 리팩토링하는 과정을 보여준다.

스프링보다는 객체지향의 기본을 다시한번 새기는 챕터.

그 객체지향의 기본 원리와 장점을 다시한번 되새겨보며

스프링의 ApplicationContext의 등장의 필요성에 대해서 처음부터 알려준다.

 

 

이때 배우게 된 것들은 

#DAO #JavaBean #리팩토링 #디자인패턴 #템플릿메소드패턴 #팩토리메소드패턴 #SOLID #전략패턴

 

 

1.4 제어의 역전 (IoC)

어느책을 읽어도 자꾸만 머릿속에 꾸겨 넣어주는 IoC(Inversion of Control) 개념.

1.3까지 설명했던 내용을 바탕으로 IoC라는게 어떤 의미에서의 역전인지 설명해준다.

#IoC #오브젝트팩토리 

 

1.5 스프링의 IoC

'우리가 아까 손수 오브젝트 팩토리를 만들어서 쓰지 않았나? 근데 굳이 스프링을 써야하는 이유가 무엇일까?'에 대해 설명한다.

#ApplicationContext가 오브젝트 팩토리보다 효율적인 이유는? #스프링IoC용어정리

 

1.6 싱글톤 레지스트리와 오브젝트 스코프

스프링의 ApplicationContext는 내부에 있는 bean들을 싱글톤레지스트리로 관리한다.

여기서 싱글톤은 무엇일까?

오브젝트의 동일성과 동등성의 차이에 대해 설명하며.

싱글톤 패턴이 무엇인지, 왜 애플리케이션에서 객체를 싱글톤으로 만들어야하는지 설명한다.

근데 의외로 싱글톤은 굉장히 위험한 디자인 패턴이다. 심지어 피해야 할 패턴이라는 의미로 안티패턴이라고 부르는 사람도 있다고 한다. 

싱글톤 패턴의 한계는 무엇이고, 어떤 점에서 조심해서 사용해야하는지 알 수 있는 챕터이다.

#싱글톤 #싱글톤패턴의 한계

 

1.7 의존관계 주입(DI)

의존관계 주입(Dependency Injection)... IoC와 더불어서 100번쯤 들은 스프링의 특징인듯 하다.

IoC라는 용어는 사실 굉장히 느슨하게 정의되어 여러의미로 쓰일 수 있는 용어이다.

스프링을 IoC컨테이너라고 해도 그 의미가 확 와닿지는 않는데, 

스프링 IoC의 핵심은 바로 이 의존관계 주입이다.

의존관계가 무엇인지 처음부터 짚어보고,  그래서 스프링이 왜 특별한지 설명해준다.

 

#오브젝트의 동일성과 동등성 #싱글톤패턴

 

 

댓글