스프링에 빠지지 않는 개념인 '의존성 주입'
의존성 이라는 것은 하나의 객체가 다른 객체없이 제대로 된 역할을 할 수 없다는 것을 의미한다. 흔히 A 객체가 B객체 없이 동작이 불가능한 상황을 'A가 B에 의존적이다' 라고 표현한다.
주입 은 말 그대로 외부에서 '밀어 넣는 것'을 의미한다. 외부에서 주입하는 것과 그렇지 않은 것의 차이는 필요한 객체를 얻기 위해서 주체가 능동적인지 수동적인지에 대한 문제이다.
그렇다면 '의존성 주입'은 어떤 객체가 필요한 객체를 외부에서 밀어 넣는다는 의미가 된다. 하지만 왜 이런 방식을 사용할까?
편리하다, 재사용성 상승, 유연성과 확장성 향상 ...
주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없기 때문이다.
의존성 주입 방식을 사용하려면 의존성이 필요한 객체에 필요한 객체를 찾아서 주입하는 추가적인 하나의 존재가 필요하게 된다.
스프링에서는 'Application Context'라는 존재가 이 역할을 해준다.
따라서 스프링을 이용하면 우리들은 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하고, 이러한 객체들을 엮는 작업을 하는 형태의 개발을 하게 된다.
Application Context가 관리하는 객체들을 스프링에서 빈(Bean)이라고 부르고, 빈과 빈 사이의 의존관계를 처리하는 방식에는 XML설정, 어노테이션 설정, Java 설정 방식을 이용할 수 있다.
+필드 주입, 수정자 주입 보다는 생성자 주입을 쓰도록 하자!