Container란 개발자를 대신하여 인스턴스의 생명 주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것으로 작성한 코드를 참조하여 객체의 생성과 소멸을 컨트롤
자바 객체를 담고 있다.
Bean들의 생명 주기 관리
어플리케이션을 구성하는 Bean들을 관리하기위해 IoC를 사용
BeanFactroy는 getBean()이 호출된 시점에서야 해당 빈을 생성하지만 ApplicationContext는 컨텍스트 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 기동 후에는 빈을 지연 없이 얻을 수 있다.
Component Scanning
@ComponentScan, @Component Anotation을 사용해서 Bean을 등록하는 방법
@ComponentScan은 @Component이 부여된 Class를 찾아서 자동으로 Bean을 등록해주는 역할
@ComponentScan이 붙어있는 Class가 있는 package에서부터 모든 하위 package의 모든 Class를 찾아서 @Component나 @Component를 사용하는 다른 Annotation을 사용하는 Class를 찾는다.
Configuration
- Java Class에 설정하는 방법
Java class에서 @Configuration Annotation을 사용해서 직접 @Bean을 등록
@Bean Annotation을 사용해 직접 Bean을 정의하면 자동으로 Bean으로 등록
(@Configuration Annotation을 보면 이 Annotation도 내부적으로 @Component를 사용하기 때문에 @ComponentScan의 검색 대상)
- XML에 설정하는 방법
XML 파일에 직접 Bean을 등록하여 Application의 Bean을 설정