스프링의 핵심 담당 : 빈 팩토리, 애플리케이션 컨텍스트
(애플리케이션 컨텍스트는 빈 팩토리를 좀 더 확장.)
스프링 빈
- 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트
- 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트
애플리케이션 컨텍스트 역할
- 빈 생성, 관계 설정 등의 제어 작업 총괄
- '어떤 클래스의 오브젝트를 생성하고 어디에서 사용하도록 연결해 줄 것인가'에 관한 정보를 직접 담고 있진 않고, 별도로 설정정보를 담고 있는 것을 가져와 활용한다.
- 해당 설정 정보를 만드는 방법 : XML, 자바 코드 등
애플리케이션 컨텍스트를 부르는 다른 말들
= IoC 컨테이너 = 스프링 컨테이너 = 빈 팩토리
(애플리케이션 컨텍스트는 빈 팩토리를 상속함)
애플리케이션 컨텍스트 동작방식
- @Configuration이 붙은 설정 파일을 읽어와 @Bean이 붙은 메서드의 이름을 가져와 빈 목록을 만든다.
- 클라이언트가 getBean()으로 요청할 때 빈을 생성하는 메서드를 호출해서 오브젝트를 생성시킨 후 전달해준다.
스프링 IoC 용어 정리
- 빈 : 스프링이 IoC 방식으로 관리하는 오브젝트. 스프링이 직접 그 생성과 제어를 담당하는 오브젝트. (스프링 애플리케이션에서 만들어지는 모든 오브젝트가 전부 빈은 아니다.)
- 빈 팩토리 : 스프링 IoC를 담당하는 핵심 컨테이너. 빈 등록, 생성, 조회, 그 외에 부가적인 빈을 관리하는 기능 담당. 보통 빈 팩토리를 바로 사용하지 않고 이를 확장한 애플리케이션 컨텍스트를 이용한다.
- 애플리케이션 컨텍스트 : 빈 팩토리를 확장한 IoC 컨테이너. 빈을 등록하고 관리. 여기에 더해 스프링이 제공하는 각종 부가 서비스를 추가로 제공한다.
- 설정정보(configuration) : 애플리케이션 컨텍스트가 IoC를 적용하기 위해 사용하는 메타정보.
토비의 스프링