컨테이너는 인스턴스의 생명주기를 관리
생성된 인스턴스에게 추가적인 기능 제공
ex) Servlet을 실행해주는 WAS는 Servlet 컨테이너를 가지고 있음
Inversion of Control의 약자
컨테이너가 코드 대신 오브젝트의 제어권을 갖고 있어 IoC(제어의 역전)이라 함
ex) 서블릿 클래스는 개발자가 만들지만, 그 서블릿의 메소드를 알맞게 호출하는 것은 WAS, 이렇게 개발자가 만든 어떤 클래스나 메소드를 다른 프로그램이 대신 실행해주는 것을 제어의 역전이라고 함
Dependency Injection의 약자, 의존성 주입이란 뜻
클래스 사이의 의존 관계를 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
팩토리에서 만들어진 인스턴스를 가져올 수 있는 방법 중 하나
DI가 적용되지 않으면 개발자가 직접 인스턴스를 생성해야 한다.
new를 사용하여 직접 인스턴스를 생성하는 것이 아니라 컨테이너가 알아서 인스턴스를 생성해 변수에 할당해줌
기존 할당 방식
class 엔진 {
}
class 자동차 {
엔진 v5 = new 엔진();
}
@Component
class 엔진 {
}
@Component
class 자동차 {
@Autowired
엔진 v5;
}