English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Разница между контекстом приложения и Beanfactory в Spring фреймворке

Spring фреймворк предоставляет два контейнера IOC, используемые для управления, конфигурации и операций с Bean. Один из них - это BeanFactory, а другой - контекст приложения. 

Интерфейс контекста приложения расширяет BeanFactory, чтобы улучшить функции BeanFactory. 

В новых версиях Spring BeanFactory заменяется ApplicationContext. Однако, existence BeanFactory необходимо для обратной совместимости. 

Spring 2.0 и выше версий использует расширение точки расширения BeanPostProcessor (интерфейс предоставляет некоторые методы вызова обратного вызова, которые мы можем реализовать, чтобы настроить логику инсталляции, логику разрешения зависимостей и т.д.). Поэтому, если вы используете BeanFactory, то для использования некоторых функций (например, AOP и обработка транзакций) необходимо выполнить некоторые дополнительные настройки.

НомерКлючBean factoryПриложение
1
Реализация 
XMLBeanFactory реализует BeanFactory 
FileSystemXmlApplicationContext, ClassPathXmlApplicationContext и AnnotationConfigWebApplicationContex реализуют ApplicationContext. 

Кроме того, ApplicationContext расширяет Beanfactory 
2
Аннотация 
Нет
Да
3
Инсталляция
Bean factory создает инстансы бинов, когда вызывается метод getBean().
При запуске контейнера приложение создает инстанс бина.
4
Публикация событий 
Bean factory не имеет возможности推送 событий на бины 
Контекст приложения имеет возможность推送 событий на бины.
5
Механизм загрузки
Lazy loading 
Агрессивная загрузка 
Основной учебник
Рекомендуется для вас