asdfsdaaf

주입

2020. 2. 2. 08:27

Injection

 

주입(Injection)은 말그대로 외부에서 '밀어 넣는 것'을 의미합니다. 외부에서 주입하는 것과 그렇지 않은 것을 이해하기 위해서 음식점의 식재료를 생각해 보면 이해가 쉽습니다. 어떤 음식점의 경우는 매일 가게를 열기 전 직접 식재료를 구하기 위해 시장을 가지만, 프랜차이즈 식당들은 본사가 트럭 등을 이용해서 식재료를 공급합니다. 이 두가지 방식의 차이는 필요한 객체를 얻기 위해서 주체가 능동적인지 수동적인지에 대한 문제입니다.

 

의존성과 주입을 결합해서 생각해 보면 '어떤 객체가 필요한 객체를 외부에서 밀어 넣는다는 의미가 됩니다. 그렇다면 다음은 '왜 외부에서 객체를 주입하는 방식'을 사용하는지에 대한 문제를 알아볼 필요가 있습니다.

 

음식점의 예에서 직접 식재료를 사지 않고, 대행업체에서 배송해주는 것을 사용하는 경우에 얻는 장점이 무엇인가에 대해서 고민해보면 역시 '편리하다', '장사에만 집중할 수 있다' 와 같은 장점들을 생각해 볼 수 있습니다.

 

이를 코드에 대입해서 살펴보면 '주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다', '어떤 객체에 의도하든 자신의 역할은 변하지 않는다'와 같은 의미로 볼 수 있습니다. 이러한 변화를 그림으로 표현하면 다음과 같은 형태가 될  수 있을 것입니다.

 

스프링은 이러한 구조를 만드는 데 적합한 구조로 설계되어 있습니다. 스프링에서는 'XXXcontext'나 'XXX-context'라는 존재가 필요한 객체들을 생성하고, 이러한 객체들을 엮는(wiring) 작업을 하는 형태의 개발을 하게 됩니다. 스프링에서는 관리하는 객체들을 빈(Bean)이라는 용어로 부르고 빈과 빈 사이의 의존 관계를 처리하는 방식으로 개발을 진행하게 됩니다.

'기타' 카테고리의 다른 글

면접 대비  (0) 2020.02.13
사용한 어노테이션들  (0) 2020.02.02
DB 환경 설정하기  (0) 2020.01.30
Spring 환경 설정하기  (0) 2020.01.29
면접 준비  (0) 2020.01.27

공유하기

facebook twitter kakaoTalk kakaostory naver band