
spring을 공부하다 보니 '의존성'이라는 단어가 정말 많이 나왔다.
책에서도 스프링에 대한 얘기를 하면서 빠지지 않는 개념이 '의존성 주입'개념이라고 하는데 그렇다면 의존성 주입이라는 것은 무엇일까?
의존성(dependency)
하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것
-> 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 다는 것을 의미
흔히 A 객체가 B 객체 없이 동작이 불가능한 상황을 'A가 B에 의존적이다'라고 표현한다.
주입(injection)
외부에서 '밀어 넣는 것'을 의미
따라서
의존성 주입은
'어떤 객체가 필요한 객체를 외부에서 밀어 넣는다.'라는 의미가 된다.
그렇다면 '왜 외부에서 객체를 주입하는 방식'을 사용하는 것일까?
spring은 이러한 구조를 만드는 데 적합한 구조로 설계되어 있다.
'ApplicationContext'라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해 주는 구조이다.
=> 스프링을 이용하면 개발자들은 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하고, 이러한 객체들을 엮는 작업을 하는 형태의 개발을 하게 된다.
ApplicationContext가 관리하는 객체들을 'Bean'이라는 용어로 부르고, bean과 bean 사이의 의존관계를 처리하는 방식으로 XML 설정, 어노테이션 설정, Java 설정 방식을 이용할 수 있다.