웹 애플리케이션은 수 많은 웹 컴포넌트들의 협업으로 동작합니다.
여기서 웹 컴포넌트란 Controller, Service, Repository 등의 클래스로 웹 서비스를 구현하는 구성요소들을 의미합니다.
이 웹 컴포넌트들을 스프링 컨테이너에서 **빈(Bean)**이라 불리는 객체로 관리합니다.
스프링 빈의 특징에 대해 알아보고, 스프링 컨테이너가 빈을 어떻게 관리하는지 알아보고, 빈을 등록하는 방법에 대해 알아보겠습니다.
하지만 그 이전에 스프링 빈과 그 등록 방식을 이해하기 위해서는 알아야할 내용이 있습니다.
이는 의존 주입에 대한 것인데, 이것을 먼저 알아보고 난 뒤 스프링에 대한 내용을 이어가도록 하겠습니다.
이거 객지프때 작성한 강의록인데 읽어보시면 좋을 듯 해요
OOP에서 하나의 객체는 섬(island)으로 존재하지 않습니다. 소프트웨어 내부에는 수 많은 객체가 존재하고, 객체들은 각자의 역할과 책임을 다하며 서로 메시지를 주고 받으며 협력하여 프로그램이 동작하게 됩니다.
협력을 한다는 것은 그 협력 대상에 대한 이해를 필요로 하며, 이는 대상 객체에 대해 ‘알고’ 있어야 한다는 것을 의미합니다.
대상 객체에 대해 ‘알고’ 있다는 것은 어떤 의미일까요? 대상 객체를 알고 있다는 것은 해당 객체의 public interface, 기대되는 행동을 알고있다는 의미를 가질 수 있습니다. 일부는 더 나아가 기대되는 행동을 어떻게 수행할지 알고 있다는 의미를 가질 수 있습니다.
대상 객체를 ‘알고’ 있는 것은 필연적으로 그것에 대해 의존하게 됩니다.