본문 바로가기

프레임워크/스프링

[토비의 스프링] 1장 정리


안녕하세요.


최근에 회사에서 스프링을 사용해서 프로젝트를 진행할 일이 생겨서 공부해볼 생각에 괜찮은 책을 찾아봤는데 토비의 스프링이란 책을 찾게 됐습니다.


스프링공부를 제대로 해본적이 없어서 전혀 모르고 있었는데 스프링 프레임워크에서 정석 같은 책이더군요.


책을 읽으면서 내용이 좋다란 느낌을 받아서 그냥 단순하게 독서와 타이핑으로 공부하기보단 내용을 정리해서 블로그에 올리자란 생각이 강하게 들어서 한장 한장 정리해볼 생각입니다.


1~8장 까지가 스프링에 관한 개념적인 내용을 정리한 것이고, 그 이후의 내용은 실사용이란 얘기를 들어서 1~8장 까지만 정리 할지 아니면 그 이후도  정리 할지는 아직 잘 모르겠습니다.  


1장 오브젝트와 의존관계



자, 시작하기 전에 프레임워크란게 뭔가를 일단 정리하고 들어가야 할 것 같습니다.


1. 라이브러리와 프레임워크


- 라이브러리 : 클래스나 메소드등을 즉시 사용할 수 있도록 모아놓은 데이터. 어플리케이션 코드에 의해 사용된다.

- 프레임워크 : 라이브러리와 마찬가지로 클래스와 메소드등이 모여있는 데이터. 프레임워크가 어플리케이션 코드를 사용한다.

 

* 개발자가 하는 실수 중 하나가 프레임워크를 라이브러리의 다른 이름이나 라이브리 종류 중 하나라거나 혹은 툴 같은 것이란 생각을 가지는 것입니다. 하지만 위에서 적어둔 것 처럼 라이브러리는 어플리케이션 코드에 의해 사용되는 즉, 사용하지 않을려면 사용하지 않아도 되는 데이터의 모임이라면 프레임워크는 그 반대로 프레임워크 자체가 어플리케이션을 사용합니다. 즉, 주체 자체가 프레임워크가 된다는 것입니다. 


 이는 특정한 프레임워크를 가지고 프로젝트를 진행하게 되면 그 프로젝트는 프레임워크의 목적과 방향성으로 진행되어 간다는 것입니다.

그렇다면, 스프링 프레임워크는 어떠한 목적과 방향성을 가지고 있는지 알아보겠습니다.


2. 스프링 프레임워크


 1장 내용을 읽으면서 처음 들었던 생각은 '1장은 스프링 보다 객체 지향 자체의 개념을 설명하네?' 란 생각 이였습니다. 하지만 마지막 까지 읽으면서 그게 아니라 그러한 특성(객체지향)을 살린 프로그래밍을 가능하게 해주는게 스프링 프레임워크구나란걸 알았습니다. 


 즉, 스프링 프레임워크란 프로젝트를 좀 더 객체지향적이게 해주는 프레임워크 라고 설명할 수 있습니다.


- DI(Dependency Injection : 의존성 주입) 


 여기서 스프링 프레임워크를 이해하기 위한 가장 중요한 개념은 바로 DI입니다. DI는 의존성 주입이란 뜻인데 단어 자체가 처음에는 그렇게 와닿지는 않습니다. 일단 위키백과의 설명을 보겠습니다.


의존성 주입(Dependency Injection, DI)은 프로그래밍에서 구성요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인 패턴 중의 하나이다.

 

 저 설명을 보면 첫번째로 의존 관계가 뭔지 알아야 합니다. 첫 번째로 클래스 관점에서의 의존 관계란 A 클래스 내부에서 B 클래스로 만들어진 객체가 존재한다면 A클래스는 B클래스에 의존한다라는 뜻 입니다. 즉, Has a 관계를 말합니다.