백엔드/Spring

스프링의 주요 개념 4가지

삐삐에스 2024. 7. 16. 17:01

스프링에서 가장 중요한 개념 4가지에 대해서 정리해보려고 한다.

이 4가지는 IoC, DI, 컨테이너, 스프링 빈이다.

하나씩 차례대로 알아보겠다!

 

IoC

IoC는 Inversion Of Control의 줄임말이고, 한국어로 번역하면 '제어의 역전'이다.

제어의 역전..? 이렇게 보면 무슨 말인지 감이 오지 않아서 다르게 생각해보겠다.

 

우선 Inversion이 의미하는 역전은 'A가 B를 역전하다.' 라는 의미가 아니다.

여기서 Inversiondms '180도 상황을 바꾸는 것' 즉, On/Off 상황을 의미한다.

그리고 여기서 Control은 어떤 것을 제어한다는 것일까?

Java, Spring에서 말하는 제어는 당연히 '객체'를 제어하는 것을 의미한다.

이 두 의미를 합쳐서 생각해보면 '객체를 제어하는 상황을 180도 바꾼다.'라는 의미가 된다.

 

원래 객체를 제어하는 것은 개발자이다.

개발자가 코드를 짜서 객체를 new로 생성하고, 객체에 있는 필드나 메소드를 사용하고, 또 객체를 삭제하기도 한다.

그런데 이러한 상황을 180도 바꾼다는 것은 이제 더이상 개발자가 객체를 제어하지 않는다는 의미이다.

 

이제는 Spring이 제어권을 가지고 객체를 제어하게 된다.

여기까지가 IoC이다. 제어권을 가진 주체가 역전된 것이다.

 

 

DI

개발자가 제어권을 갖고있지 않은 상황에서 개발자가 객체를 사용하고자 하면 어떻게 해야할까?

 

DI는 Dependency Injection의 줄임말로, 한국어로 번역하면 '의존성 주입'이다.

이 또한 말이 너무 어렵다...

의존성은 무엇이고, 주입은 또 무엇일까?

 

A가 B에게 의존한다.. 라는 의미는 A가 B를 많이 사용한다는 의미이다.

즉, 의존성 주입을 쉽게 말하면 사용할 것을 주입한다는 뜻이다.

 

개발자는 이전처럼 마음대로 객체를 생성할 수 없고, 객체 제어권을 가진 스프링에게 객체 사용권을 얻어야한다.

그러므로 개발자는 스프링에게 "스프링! 사용하게 객체 좀 줘!"라고 말해야한다.

이렇게 사용할 것들을 프로젝트에 주입하게 되면 그 사용할 것들을 이제 사용할 수 있게 되는 것이다.

 

스프링 빈

여기서 '사용할 것'이 뭘까? 이게 바로 스프링 빈이다.

즉, 스프링 빈은 객체를 의미한다. 

쉽게 말하면 스프링에서 돌아다니는 객체들을 스프링 빈이라고 부르는 것이다.

 

컨테이너

스프링 빈이 여기저기 흩어져 있다면 스프링은 이 객체들을 관리하기 힘들 것이다.

객체 관리를 편하게 만들기 위해서 한 데에 모아놔야 한다.

이렇게 모아두는 일종의 공간을 컨테이너라고 부른다.

 

 

 

즉, 컨테이너 안에 스프링 빈이 모여있고, 개발자는 원하는 객체를 사용하기 위해 이 스프링 빈을 주입하여 사용한다.

 

 

 

 


나는 이때까지 의존성 주입이라는 말을 제대로 이해하지 못했는데, 이렇게 쉽게 생각하니까 금방 이해가 되었다.

이 글을 보시는 분들 모두 말을 쉽게 풀어서 이해해보면 좋을 것 같다!!

반응형