SPRING

5. ApplicationContext

ggomjiu 2025. 5. 26. 01:17

ApplicationContext

: 빈들의 생성과 의존성 주입 등의 역할을 하는 일종의 DI 컨테이너

- Spring에서는 Bean의 생성과 관계 설정 같은 제어 역할을 담당하는 IOC 컨테이너인 BeanFactory가 존재

- 이것만으로는 서비스에서 요구하는 다양한 기능들을 수용하기에 무리가 있음

- ApplicationContext라는 인터페이스를 만들어 개발자의 Bean을 생성하고 제어하는 것뿐만 아니라 설정 정보들을 이용한 Bean간의 관계 설정, 제어 작업 등 추가적인 기능을 수행할 수 있음

 

스프링 컨테이너

=> ApplicationContext

: BeanFactory 인터페이스의 하위 인터페이스

=> BeanFactory에 부가 기능을 추가한 것

- BeanFactory를 상속받아 확장한 ApplicationContext를 주로 사용함

- 컨테이너 내부에는 빈 저장소가 존재함

  • key : 빈의 이름
  • value : 실제 빈 객체

- 기본적으로 빈을 싱글톤으로 관리해줌

- @Configuration : @Bean을 생성하고 스프링 컨테이너에 등록하게 하는 어노테이션

 

Bean 요청 시 처리 과정

  1. ApplicationContext는 @Configuration이 붙은 클래스들을 설정 정보로 등록
  2. @Bean이 붙은 메소드의 이름으로 빈 목록을 생성
  3. 클라이언트가 해당 빈을 요청
  4. ApplicationContext는 자신의 빈 목록에서 요청한 이름이 있는지 찾음
  5. 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