안녕하세요 오늘은 스프링의 Application Context에 대해 배워보겠습니다 🧑🏼💻
Spring 프레임워크는 IoC 개념이 강하게 적용된 대표적인 기술입니다.
IoC란 프로그램의 제어 흐름 구조가 뒤바뀌는 것입니다.
프레임워크에 개념에 따라 개발자가 작성한 어플리케이션 코드가 프레임워크에 의해 사용됩니다.
보통 프레임워크 위에 개발된 클래스를 등록하고 , 프레임워크가 IOC를 통해 흐름을 주도하는 형식을 가집니다 👼
여기서 Application Context란 스프링 어플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IOC 엔진입니다.
더 구체적으로 설명하자면, IoC 컨테이너인 빈 팩토리(Bean Factory)가 존재하며 빈 팩토리를 상속받아 확장한 것이 어플리케이션 컨텍스트 입니다 👨💻
Application Context는 별도의 설정 정보(ex @Configuration 이 적용된 클래스) 를 참고하고 IoC 를 적용하여 빈의 생성, 관계 설정 등의 제어 작업을 총괄합니다.
1) 클라이언트에서 해당 빈을 요청하기 전 Application Context는 @Configuration 이 붙은 클래스들을 설정 정보로 등록합니다. 또한 해당 클래스 안에 존재하는 @Bean 이 붙은 메소드의 이름으로 빈 목록을 생성합니다 🔥
2) 클라이언트가 해당 빈을 요청합니다.
3) Application Context는 자신의 빈 목록에서 요청한 이름이 있는지 찾습니다.
4) Application Context는 설정 클래스(Configuration Class) 부터 빈 생성을 요청하고
생성된 빈을 돌려줍니다.
해당 이미지는 요청에 따른 빈 처리 과정을 보여주는 이미지입니다 🌄
이처럼 빈 관리를 빈 팩토리가 직접하는 것이 아니라, 빈 팩토리를 상속한 Application Context가 빈에 관련된 모든 작업을 총괄합니다.
1) Application Context가 대신 총괄을 하기에, 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없습니다.
2) Application Context는 종합 IoC 서비스를 제공합니다.
3) Application Context를 통해 다양한 빈 검색 방법을 제공합니다.
[Spring] Ioc, DI, ApplicationContext, Bean, BeanFactory 개념
[Spring] 애플리케이션 컨텍스트(Application Context)와 스프링의 싱글톤(Singleton)