728x90
1. BeanFactory와 ApplicationContext의 개념
BeanFactory
- 개념: BeanFactory는 Spring 프레임워크에서 기본적으로 제공하는 IoC (Inversion of Control) 컨테이너로, 빈의 생명주기(생성, 관리, 소멸)를 관리하고 의존성을 주입하는 역할을 합니다. BeanFactory는 필요할 때 빈을 생성하는 지연 로딩(lazy loading) 방식을 사용합니다.
- 사용처: 메모리 사용을 최소화해야 하는 상황이나 경량 애플리케이션에서 사용되며, 부가적인 기능이 필요하지 않은 경우 적합합니다.
ApplicationContext
- 개념: ApplicationContext는 BeanFactory를 확장한 인터페이스로, BeanFactory의 모든 기능을 포함하면서 더 많은 부가 기능을 제공합니다. 예를 들어, 메시지 국제화 처리, 이벤트 전파와 같은 기능을 추가로 지원합니다. 또한, 기본적으로 모든 빈을 애플리케이션 시작 시 미리 로딩하는 사전 로딩(eager loading) 방식을 사용합니다.
- 사용처: 대규모 애플리케이션이나 웹 애플리케이션에서 주로 사용되며, 다양한 부가 기능을 필요로 하는 상황에 적합합니다.
BeanFactory 사용 예시
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class BeanFactoryExample {
public static void main(String[] args) {
// XML 설정 파일을 통해 빈을 로드
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
// 빈 요청 시에 빈이 생성됨 (지연 로딩)
MyBean myBean = (MyBean) factory.getBean("myBean");
myBean.doSomething();
}
}
ApplicationContext 사용 예시
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextExample {
public static void main(String[] args) {
// XML 설정 파일을 통해 빈을 로드
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// 애플리케이션이 시작될 때 이미 빈이 로드됨 (사전 로딩)
MyBean myBean = (MyBean) context.getBean("myBean");
myBean.doSomething();
}
}
2. Spring에서의 사용
- BeanFactory는 주로 메모리 절약이 필요한 상황에서 사용됩니다. 예를 들어, IoT 디바이스나 리소스가 제한적인 모바일 환경에서는 빈을 지연 로딩하여 불필요한 메모리 사용을 줄이는 것이 유리합니다.
- ApplicationContext는 대부분의 Spring 애플리케이션에서 기본으로 사용됩니다. 특히, 복잡한 웹 애플리케이션이나 엔터프라이즈 애플리케이션에서는 다국어 지원, AOP, 이벤트 처리 등의 부가 기능을 포함한 ApplicationContext가 더 적합합니다.
728x90
'프로그래밍 > Java' 카테고리의 다른 글
@Controller와 @RestController의 차이 (0) | 2024.10.23 |
---|---|
Portable Service Abstraction개념 활용 테스트 코드 작성 (0) | 2024.10.22 |
Junit을 활용한 테스트 코드 작성 (1) | 2024.10.18 |
Spring & Larvel 기능 비교 (0) | 2024.10.17 |
@Configuration, @Bean의 개념 및 사용이유 (2) | 2024.10.13 |