1,BeanFactory란?
BeanFactory는 Spring Framework의 핵심적인 인터페이스 중 하나입니다. 이는 객체를 생성하고 관리하는 역할을 합니다. 주로 Spring IoC (Inversion of Control) 컨테이너의 구현체로 사용됩니다.
여러 가지 객체들을 만들고, 서로 의존하는 객체들의 관계를 설정하는 일종의 컨테이너로 볼 수 있습니다. 이러한 객체들은 일반적으로 "빈(Bean)"이라 불리며, 이들은 BeanFactory에 의해 관리됩니다.
BeanFactory의 주요 기능은 다음과 같습니다:
- Bean 인스턴스화 및 관리: BeanFactory는 XML 파일이나 Java 코드를 통해 정의된 빈을 읽어들이고, 이를 생성하고 관리합니다.
- 의존성 주입(Dependency Injection): BeanFactory는 빈들 간의 의존성을 관리하며, 필요한 경우에 의존하는 다른 빈을 주입합니다.
- 라이프사이클 관리: BeanFactory는 빈의 라이프사이클을 관리합니다. 즉, 빈의 생성, 초기화, 소멸 등의 라이프사이클 단계를 제어합니다.
- AOP(Aspect-Oriented Programming) 지원: Spring은 AOP를 통해 핵심 비즈니스 로직과 횡단 관심사(Cross-cutting Concerns)를 분리할 수 있는 기능을 제공하는데, 이를 지원하기 위해 BeanFactory가 사용될 수 있습니다.
BeanFactory 인터페이스는 다양한 구현체를 가질 수 있습니다. 그 중 가장 널리 사용되는 것은 ApplicationContext 인터페이스를 구현한 구현체들입니다. ApplicationContext는 BeanFactory의 확장된 버전으로, 추가적인 기능과 편의성을 제공합니다.
요약하면, BeanFactory는 Spring IoC 컨테이너의 핵심 기능을 제공하는 인터페이스로, 객체 생성, 의존성 관리, 라이프사이클 관리 등의 기능을 담당합니다.
2,ApplicationContext란?
ApplicationContext는 Spring Framework에서 제공하는 IoC 컨테이너의 구현 중 하나로, BeanFactory를 상속받은 인터페이스입니다. BeanFactory보다 더 많은 기능과 편의성을 제공합니다.
ApplicationContext의 주요 특징과 기능은 다음과 같습니다:
1. **Bean 인스턴스화 및 관리**: ApplicationContext는 빈(Bean)을 인스턴스화하고, 관리합니다. XML 파일, Java 코드, 어노테이션을 통해 정의된 빈 설정을 읽어들이고, 해당 빈들을 생성하고 관리합니다.
2. **의존성 주입(Dependency Injection)**: 빈들 간의 의존성을 자동으로 주입해줍니다. 이를 통해 객체 간의 결합도를 낮추고 유연한 애플리케이션을 개발할 수 있습니다.
3. **라이프사이클 관리**: 빈의 라이프사이클을 관리합니다. 빈의 초기화(init)와 소멸(destroy) 단계에서 필요한 작업을 수행할 수 있습니다.
4. **국제화(i18n) 및 로컬화(l10n) 지원**: ApplicationContext는 다국어 및 지역화를 지원합니다. 메시지 리소스 번들과 같은 기능을 제공하여 다국어 애플리케이션을 쉽게 구축할 수 있습니다.
5. **이벤트 발행 및 리스닝**: ApplicationContext는 애플리케이션에서 발생하는 이벤트를 처리하고, 이를 감지하여 리스너에게 전달할 수 있는 기능을 제공합니다.
6. **AOP(Aspect-Oriented Programming) 지원**: ApplicationContext는 AOP를 지원하여 핵심 비즈니스 로직과 횡단 관심사를 분리할 수 있도록 합니다.
7. **트랜잭션 관리**: 트랜잭션을 관리하는 기능을 제공합니다. 선언적 트랜잭션과 프로그래밍 방식의 트랜잭션 처리를 모두 지원합니다.
Spring에서 ApplicationContext는 다양한 형태로 제공됩니다. 주로 사용되는 구현체로는 AnnotationConfigApplicationContext, ClassPathXmlApplicationContext, FileSystemXmlApplicationContext 등이 있습니다. 이러한 ApplicationContext 구현체들은 다양한 설정 방식 및 환경에 따라 사용됩니다.
요약하면, ApplicationContext는 BeanFactory를 확장한 Spring IoC 컨테이너의 구현으로, Bean 관리뿐만 아니라 의존성 주입, 라이프사이클 관리, 국제화, 이벤트 처리, AOP 등 다양한 기능을 제공합니다.
'개발일기 > Spring' 카테고리의 다른 글
[Spring]싱클톤 사용시 주의사항. (0) | 2024.03.18 |
---|---|
[Spring]싱글톤 컨테이너 (0) | 2024.03.18 |
[Spring] ApplicationContext (0) | 2024.03.15 |
IoC(제어의 역전)와 DI(의존성 주입) (0) | 2024.03.15 |
객체지향5원칙 SOLID (0) | 2024.03.15 |