스프링 프로젝트를 하다보면 제일 먼저 그리고 여러번 만나게될 개념은
바로 IoC Container, DI(의존성 주입), Bean입니다.
Inverse of Control : 제어권의 역전, -> 객체의 생성, 라이프사이클을 개발자가 직접 하는 것이 아니라 spring의 컨테이너가 직접 다 생성 및 관리 해주는다는 것이다.
POJO(Plain old java object) : 특정 플랫폼이나 규약에 제약 받지 않는 일반적인 자바 객체를 생성, 초기화, 서비스 소멸에 대한 권한을 가진다.
의존 관계 주입(Dependency injection)이라고 하며
어떤 객체가 사용하는 의존 객체를 직접 만들어서 사용하는 것이 아니라 주입을 받아서 사용한다는 것이다.
애플리케이션 컴포턴트의 중앙 저장소이며 이 컨테이너에 들어가는 객체를 우리는 Bean이라고 부른다. 그리하여 IoC 컨테이너는 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 미리 구성하고 제공한다.
개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가해주면 된다.(XML, annotation을 이용하여)
IoC 컨테이너에 Bean이라는 객체를 담아서 프로젝트내에서 필요한 부분에 생성자를 통하여 주입받아서 사용하게 될것이다.
스프링의 빈 팩토리와 애플리케이션 컨텍스트는 각각 기능을 대표하는 BeanFactory와 ApplicationContext라는 두 개의 인터페이스로 정의되어 있다. ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속한 서브인터페이스다.
싱글톤은 어플리케이션내에서 여러번 필요한 객체를 IoC 컨테이너에서 하나만 미리 생성하여 관리 및 활용하는 것이다.
프로토타입은 매번 같은 역할을 하는 다른 객체를 생성하는 것이다.