ApplicationContext 는 스프링 IoC 컨테이너의 구현체로, 스프링 애플리케이션의 핵심입니다.
컨테이너는 애플리케이션이 실행되면 먼저 초기화되며, 설정 파일 또는 클래스에서 제공된 정보를 바탕으로 객체들을 생성하고 관리합니다.
설정 파일에는 base.xml 과 같은 XML 파일이 있을 수 있고, @Configuration 이 붙은 자바 설정 클래스일 수도 있다.
스프링은 Singleton 스코프를 기본으로 관리하며, prototype 등의 다른 스코프를 통해 객체의 생명주기를 관리할 수 있다.
의존성 주입이 완료된 후, 애플리케이션에서 사용되는 동안 스프링은 객체의 라이프사이클을 관리합니다.
예를 들어, Bean 이 하나만 생성되어야 한다면 singleton 으로 설정하여 동일한 객체를 반환하고, prototype 으로 설정하면 매번 새로운 객체를 생성합니다.
스프링에서 DI 는 IoC 컨테이너가 Bean 을 생성하고 관리하면서 이루어집니다.
의존성 주입은 생성자 주입, Setter 주입, 필드 주입 방식으로 이루어지며, 스프링 Bean 을 생성하면서 필요한 의존성을 자동으로 주입합니다.
스프링 컨테이너는 ApplicationContext 객체를 관리하고, 이를 통해 애플리케이션의 객체 생명주기와 의존성 관계를 관리합니다.