Skills/Spring

Spring - BeanFactory & BeanDefinition

aoaa 2022. 9. 1. 23:55

1. BeanFactory

1.1 BeanFactory

 BeanFactory는 스프링 컨테이너의 최상위 인터페이스로 스프링 빈을 관리하고 조회하는 역할을 담당합니다. getBean()메서드도 BeanFactory에서 제공하는 것입니다.

 

1.2 ApplicationContext

 ApplicationContext는 BeanFactory 기능을 모두 상속받아서 제공합니다. 이미 Bean을 조회하고 관리하는 역할을 Factory가 제공한다고 하였는데, 차이가 무엇인지 살펴봐야겠죠.

 

 애플리케이션을 개발할 때는 빈은 관리하고 조회하는 기능은 물론, 수 많은 부가기능이 필요하게 될 것입니다.

 

 

메세지소스를 활용한 국제화 기능 : 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력

환경변수 : 로컬, 개발, 운영 등을 구분해서 처리

애플리케이션 이벤트 : 이벤트를 발행하고 구독하는 모델을 편리하게 지원

편리한 리소스 조회 : 파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회

 

ApplicationContext의 역할을 나열해봤는데 BeanFactory를 직접 사용할 일은 거의 없고, 빈을 관리하는 기능과 편리한 부가기능을 제공하는 Applcationcontext를 사용하게 됩니다. 이 Factory나 Apcontext를 스프링 컨테이너라 합니다.

 

참고로 API를 조회하면 확인이 가능합니다.


2. BeanDefinition

 Spring에서 Java코드, XML, Groovy를 통해 설정 정보를 받아드릴 수 있게 유연하게 설계되어 있다고 이전 글에서 설명했었습니다.

이는 BeanDefinition이라는 추상화를 통해 가능하게 한 것입니다. 이는 역할과 구현을 개념적으로 나눈 것입니다.

 XML 형식의 경우 xml을 읽어 BeanDefinition을 만드는 것이고, Java 코드도 마찬가지로 class 파일을 읽어 만들게 됩니다.

BeanDefinition을 메타정보라 하는데, 스프링 컨테이너는 이 추상화한 메타정보를 통해 스프링 Bean을 생성하게 됩니다.

 

 

'Skills > Spring' 카테고리의 다른 글

Spring - ComponentScan(컴포넌트 스캔)  (0) 2022.09.06
Spring - Singleton(싱글톤)  (0) 2022.09.04
Spring - DI & Spring Container  (0) 2022.08.31
Spring - 테스트 코드(TDD) 작성  (0) 2022.08.02
Spring - Spring Web Layer  (0) 2022.07.27