Spring IoC 컨테이너가 관리하는 자바 객체를 Bean이라고 한다.
그리고 스프링 컨테이너는 ApplicationContext이라 한다. 잘못생각하면 위 두개의 개념을 같은 것으로 오해할 수 있을 것이다. 그래서 이번 포스팅은 비슷해 보이는 Bean과 ApplicationContext의 개념을 이해하기 쉽게 정리하고 둘의 관계를 정의해볼 것이다.
⦁ 스프링 컨테이너의 최상위 인터페이스이다.
⦁ 스프링 빈을 관리하고 조회하는 역할을 담당한다.
⦁ 'getBean()'을 제공한다.
⦁ 스프링 자체에서 제공해주는 기능은 대부분 BeanFactory가 제공하는 기능이다.
⦁ BeanFactory기능을 모두 상속받아서 제공한다.
⦁ Bean이 제공하는 기능들을 제외하고 실무에서 사용될 때 필요한 수많은 부가기능들을 제공해준다.
ApplicationContext가 제공해주는 부가기능들
⦁ 메세지소스를 활용한 국제화 기능
-> 예를 들어 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력
⦁ 환경변수
-> 로컬, 개발, 운영등을 구분해서 처리
⦁ 어플리케이션 이벤트
-> 이벤트를 발행하고 구독하는 모델을 편리하게 지원
⦁ 편리한 리소스 조회
-> 파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회
[참고문헌]
Spring 핵심원리 - 김영한 강사님