[Spring] Application Context 란?

최동근·2023년 1월 11일
1

스프링

목록 보기
2/8
post-thumbnail

안녕하세요 오늘은 스프링의 Application Context에 대해 배워보겠습니다 🧑🏼‍💻

📚 애플리케이션 컨텍스트(Application Context)

Spring 프레임워크는 IoC 개념이 강하게 적용된 대표적인 기술입니다.

IoC란 프로그램의 제어 흐름 구조가 뒤바뀌는 것입니다.

프레임워크에 개념에 따라 개발자가 작성한 어플리케이션 코드가 프레임워크에 의해 사용됩니다.
보통 프레임워크 위에 개발된 클래스를 등록하고 , 프레임워크가 IOC를 통해 흐름을 주도하는 형식을 가집니다 👼

여기서 Application Context란 스프링 어플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IOC 엔진입니다.
더 구체적으로 설명하자면, IoC 컨테이너인 빈 팩토리(Bean Factory)가 존재하며 빈 팩토리를 상속받아 확장한 것이 어플리케이션 컨텍스트 입니다 👨‍💻

Application Context는 별도의 설정 정보(ex @Configuration 이 적용된 클래스) 를 참고하고 IoC 를 적용하여 빈의 생성, 관계 설정 등의 제어 작업을 총괄합니다.

📚 클라이언트 요청에 따른 빈(Bean) 처리 과정

1) 클라이언트에서 해당 빈을 요청하기 전 Application Context는 @Configuration 이 붙은 클래스들을 설정 정보로 등록합니다. 또한 해당 클래스 안에 존재하는 @Bean 이 붙은 메소드의 이름으로 빈 목록을 생성합니다 🔥

2) 클라이언트가 해당 빈을 요청합니다.

3) Application Context는 자신의 빈 목록에서 요청한 이름이 있는지 찾습니다.

4) Application Context는 설정 클래스(Configuration Class) 부터 빈 생성을 요청하고
생성된 빈을 돌려줍니다.

해당 이미지는 요청에 따른 빈 처리 과정을 보여주는 이미지입니다 🌄
이처럼 빈 관리를 빈 팩토리가 직접하는 것이 아니라, 빈 팩토리를 상속한 Application Context가 빈에 관련된 모든 작업을 총괄합니다.

📚 Application Context 의 장점

1) Application Context가 대신 총괄을 하기에, 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없습니다.

  • 애플리케이션이 발전하면 팩토리 클래스(빈을 생성하는 클래스) 또한 증가하는 것은 당연합니다.
    만약 Application Context가 존재하지 않다면 어떤 팩토리 클래스에 접근해야 하는지 알아야하는 번거로움이 생깁니다.
    하지만 Application Context 가 있다면 직접 팩토리에 접근할 필요가 없습니다.

2) Application Context는 종합 IoC 서비스를 제공합니다.

  • Application Context는 객체의 생성과 관계 설정이 다가 아닙니다.
    객체가 만들어지는 방식과 시점 및 전략 등을 다르게 설정할 수 있으며, 그 외에도 다양한 기능이 존재합니다.

3) Application Context를 통해 다양한 빈 검색 방법을 제공합니다.

  • Application Context 에서 빈 목록을 관리하여, 빈의 이름 혹은 어노테이션 설정으로 빈을 찾을 수 있습니다.

참고

[Spring] Ioc, DI, ApplicationContext, Bean, BeanFactory 개념
[Spring] 애플리케이션 컨텍스트(Application Context)와 스프링의 싱글톤(Singleton)

profile
비즈니스가치를추구하는개발자

0개의 댓글