19. Расскажите про ApplicationContext и BeanFactory, чем отличаются? В каких случаях что стоит использовать?

19. Расскажите про ApplicationContext и BeanFactory, чем отличаются? В каких случаях что стоит использовать?

UNKNOWN

BeanFactory

BeanFactory  —  это  интерфейс,  который  предоставляет  механизм  конфигурации, способный  управлять  объектами  любого  типа.  В  общем,  BeanFactory  предоставляет инфраструктуру конфигурации и основные функциональные возможности.

BeanFactory легче по сравнению с ApplicationContext.

ApplicationContext 

ApplicationContext  является  наследником  BeanFactory  и  полностью  реализует  его функционал, добавляя больше специфических enterprise-функций.

ApplicationContext vs. BeanFactory

  1. ApplicationContext загружает все бины при запуске, а BeanFactory - по требованию.
  2. ApplicationContext расширяет BeanFactory и предоставляет функции, которые подходят для корпоративных приложений:
  3. поддержка внедрения зависимостей на основе аннотаций;
  4. удобный доступ к MessageSource (для использования в интернационализации);
  5. публикация ApplicationEvent  -  для  бинов,  реализующих  интерфейс ApplicationListener, с помощью интерфейса ApplicationEventPublisher;
  6. простая интеграция с функциями Spring AOP.
  7. ApplicationContext поддерживает  автоматическую  регистрацию  BeanPostProcessor  и
  8. BeanFactoryPostProcessor. Поэтому всегда желательно использовать ApplicationContext, потому что Spring 2.0 (и выше) интенсивно использует BeanPostProcessor.
  9. ApplicationContext поддерживает практически все типы scope для бинов, а BeanFactory поддерживает только два - Singleton и Prototype.
  10. В BeanFactory  не  будут  работать  транзакции  и  Spring  AOP.  Это  может  привести  к путанице, потому что конфигурация с виду будет корректной.

Предыдущий вопрос: 18. Расскажите про аннотацию @Profile

Следующий вопрос: 20. Расскажите про жизненный цикл бина, аннотации @PostConstruct и @PreDestroy()

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page