ApplicationContext
: 빈들의 생성과 의존성 주입 등의 역할을 하는 일종의 DI 컨테이너
- Spring에서는 Bean의 생성과 관계 설정 같은 제어 역할을 담당하는 IOC 컨테이너인 BeanFactory가 존재
- 이것만으로는 서비스에서 요구하는 다양한 기능들을 수용하기에 무리가 있음
- ApplicationContext라는 인터페이스를 만들어 개발자의 Bean을 생성하고 제어하는 것뿐만 아니라 설정 정보들을 이용한 Bean간의 관계 설정, 제어 작업 등 추가적인 기능을 수행할 수 있음
스프링 컨테이너
=> ApplicationContext
: BeanFactory 인터페이스의 하위 인터페이스
=> BeanFactory에 부가 기능을 추가한 것
- BeanFactory를 상속받아 확장한 ApplicationContext를 주로 사용함
- 컨테이너 내부에는 빈 저장소가 존재함
- key : 빈의 이름
- value : 실제 빈 객체
- 기본적으로 빈을 싱글톤으로 관리해줌
- @Configuration : @Bean을 생성하고 스프링 컨테이너에 등록하게 하는 어노테이션
Bean 요청 시 처리 과정
- ApplicationContext는 @Configuration이 붙은 클래스들을 설정 정보로 등록
- @Bean이 붙은 메소드의 이름으로 빈 목록을 생성
- 클라이언트가 해당 빈을 요청
- ApplicationContext는 자신의 빈 목록에서 요청한 이름이 있는지 찾음
- ApplicationContext는 설정 클래스로부터 빈 생성을 요청하고, 생성된 빈을 돌려줌
- Spring 내부에서 Reflection API를 이용하여 Bean 정의에 나오는 클래스 이름을 이용하거나 BeanFactory를 통해 Bean을 생성
cf) Bean
: 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트
-> 스프링 컨테이너가 관리하는 자바 객체
- 인스턴스화된 객체를 의미
- 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 함
ApplicationContext의 장점
- 클라이언트는 @Configuration이 붙은 구체적인 팩토리 클래스를 알 필요가 없음
- 애플리케이션 컨텍스트가 없다면 클라이언트는 원하는 객체를 가져오려면 어떤 팩토리 클래스에 접근해야 하는지 알아야 하는 번거로움이 생김
- 애플리케이션 컨텍스트를 사용하면 팩토리가 아무리 많아져도 이에 접근할 필요가 없어 일관된 방식으로 원하는 Bean을 가져올 수 있음
- ApplicationContext는 종합 IoC 서비스를 제공해줌
- 애플리케이션 컨텐스트는 객체의 생성과 관계 설정 뿐만 아니라 객체가 만들어지는 방식과 시점 및 전략 등을 다르게 가져갈 수 있음
- 그 외에도 후처리나 정보의 조합 인터셉트 등과 같은 다양한 기능이 존재
- ApplicationContext를 통해 다양한 빈 검색 방법을 제공할 수 있음
- 애플리케이션 컨텍스트에서 Bean 목록을 관리하여, Bean의 이름이나 타입 또는 어노테이션 설정 등으로 빈을 찾을 수 있음
'SPRING' 카테고리의 다른 글
7. Bean(Scope) (0) | 2025.05.26 |
---|---|
6. PSA & IOC & AOP & POJO (0) | 2025.05.26 |
4. MVC 패턴 (0) | 2025.05.24 |
3. JSP (0) | 2025.05.24 |
2. 서블릿 (1) | 2025.05.23 |