19. Расскажите про ApplicationContext и BeanFactory, чем отличаются? В каких случаях что стоит использовать?
UNKNOWNBeanFactory
BeanFactory — это интерфейс, который предоставляет механизм конфигурации, способный управлять объектами любого типа. В общем, BeanFactory предоставляет инфраструктуру конфигурации и основные функциональные возможности.
BeanFactory легче по сравнению с ApplicationContext.
ApplicationContext
ApplicationContext является наследником BeanFactory и полностью реализует его функционал, добавляя больше специфических enterprise-функций.
ApplicationContext vs. BeanFactory

- ApplicationContext загружает все бины при запуске, а BeanFactory - по требованию.
- ApplicationContext расширяет BeanFactory и предоставляет функции, которые подходят для корпоративных приложений:
- поддержка внедрения зависимостей на основе аннотаций;
- удобный доступ к MessageSource (для использования в интернационализации);
- публикация ApplicationEvent - для бинов, реализующих интерфейс ApplicationListener, с помощью интерфейса ApplicationEventPublisher;
- простая интеграция с функциями Spring AOP.
- ApplicationContext поддерживает автоматическую регистрацию BeanPostProcessor и
- BeanFactoryPostProcessor. Поэтому всегда желательно использовать ApplicationContext, потому что Spring 2.0 (и выше) интенсивно использует BeanPostProcessor.
- ApplicationContext поддерживает практически все типы scope для бинов, а BeanFactory поддерживает только два - Singleton и Prototype.
- В BeanFactory не будут работать транзакции и Spring AOP. Это может привести к путанице, потому что конфигурация с виду будет корректной.
Предыдущий вопрос: 18. Расскажите про аннотацию @Profile
Следующий вопрос: 20. Расскажите про жизненный цикл бина, аннотации @PostConstruct и @PreDestroy()
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне