Published 2022. 9. 26. 14:09

Application Context

 

Spring 에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC(Inversion of Control) 컨테이너인 빈 팩토리(Bean Factory) 가 존재한다.

하지만 실제로는 빈의 생성과 관계설정 외에 추가 적인 기능이 필요한데, 이러한 이유로 Spring에서는 빈 팩토리를 상속받아 확장한 Application Context 를 주로 사용한다.

 

Application Context 는 별도의 설정 정보를 참고하고 IoC 를 적용하여 빈의 생성, 관계설정 등의 작업을 총괄한다.

Application Context 에는 직접 오브젝트를 생성하고 관계를 맺어주는 코드가 없다. 그래서 생성 정보와 연관관계 설정을 읽어 처리한다. @Configuration 과 같은 어노테이션이 대표적이다.

 

 

 

빈(Bean) 요청 시 처리 과정

 

클라이언트에서 해당 빈을 요청하면 Application Context 는 다음과 같은 과정을 거쳐 빈을 반환한다.

 

1. Application Context 는 @Configuration 이 붙은 클래스들을 설정 정보로 등록해두고 @Bean 이 붙은 메소드의 이름으로 빈 목록을 생성한다.

 

2. 클라이언트가 해당 빈을 요청한다.

 

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

 

4. Application Context 는 설정 클래스로부터 빈 생성을 요청하고, 생성된 빈을 돌려준다.

 

Application Context 는 @Configuration 이 붙은 클래스들을 설정 정보로 등록해두고, @Bean 이 붙은 메소드로 빈 목록을 생성한다. 그리고 클라이언트가 해당 빈을 요청한다면 Application Context 는 자신의 빈 목록에서 요청한 이름이 있는지 찾고, 있다면 해당 빈 생성 메서드(@Bean) 을 호출하여 객체를 생성하고 돌려준다. 

구체적으로는 Spring 내부에서 Reflection API 를 이용해 빈 정의에 나오는 클래스 이름을 이용하거나 또는 빈 팩토리를 통해 빈을 생성한다.

 

'Spring' 카테고리의 다른 글

Spring - REST방식의 데이터 교환 방식의 이해  (0) 2022.10.18
Spring - MyBatis 연동 시 sqlSessionFactory 오류  (0) 2022.10.01
Spring - pom.xml  (0) 2022.09.14
Spring - web.xml  (0) 2022.09.13
Spring - Maven  (0) 2022.09.13
복사했습니다!