2013-03-13 53 views
2
1. BeanFactory fac=new ClassPathXmlApplicationContext("Spring-Config.xml"); 

2. Resource res=new Classpathresource("Spring-Config.xml"); 
    BeanFactory fac=new XmlBeanFactory(res); 

(я нашел 2-го типа только я могу указать файл родительского Configration для использования Каковы различные способы создания объекта beanfactory?

3. ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Config.xml"); 

У меня есть 3 способа загрузки BeanFactory и я хочу знать, в чем разница между ними. Как я могу определить родительский файл конфигурации во всех этих методах, если это возможно?

+0

Что вы на самом деле делаете? Вы пытаетесь настроить Spring здесь или пытаетесь получить ссылку на свой контекст приложения в программе? – CorayThan

+0

вы хотите знать разные между beanfactory и applicationcontext? – OQJF

+0

Я хочу получить доступ к объекту bean из файла xml. так что beanfactoryobj.getBean («id») возвращает объект соответствующего компонента. Но в некоторых сайтах они используют контекст вместо использования beanfactory ... наконец, мне нужна разница между их использованием ... – JackVimal

ответ

2

ApplicationContext получен из интерфейса BeanFactory, поэтому он обладает всеми функциями, которые BeanFactory имеет и имеет дополнительные функции, ниже на официальном сайте Spring: MessageSource, обеспечивающий доступ к сообщениям в стиле i18n. Доступ к ресурсам, таким как URL-адреса и файлы. Распространение событий в компонентах, реализующих интерфейс ApplicationListener. Загрузка нескольких (иерархических) контекстов, позволяющих сфокусироваться на одном конкретном слое, например, на веб-уровне приложения.

Как вы сказали, что некоторый код использует BeanFactory и некоторые использует ApplicationContext, это на самом деле не более разные, но одна вещь, из-за дополнительных функций ApplicationContext, это будет более тяжелым и может работать с сделки и АОП , он будет очень хорош для использования в контейнерной среде, такой как Tomcat и другие. Вы можете найти больше здесь, особенно в разделе 3.8.1. BeanFactory или ApplicationContext?: http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#context-introduction-ctx-vs-beanfactory

1

Иерархия BeanFactory показана на изображении here.

Обратите внимание, что это интерфейсы, и интерфейс может иметь много-много реализаций и, следовательно, соответствующие различные способы получения компонента.

А вот разница листинга BeanFactory Vs ApplicationContext

0

BeanFactory и ApplicationContext и способы, чтобы получить бобы из вашей весны МОК контейнера, но все же есть какая-то разница.

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

BeanFactory и ApplicationContext оба Java интерфейсы и ApplicationContext расширяет BeanFactory. Оба они представляют собой конфигурацию с использованием файлов конфигурации XML. Короче говоря, BeanFactory обеспечивает базовую инверсию управления (IoC) и инжекцию зависимостей (DI), в то время как ApplicationContext предоставляет продвинутые функции.

A BeanFactory представлен интерфейсом «org.springframework.beans.factory« Где BeanFactory, для которого существует множество реализаций.

ClassPathResource resource= new ClassPathResource("appConfig.xml"); 
 
XmlBeanFactory factory = new XmlBeanFactory(resource);

РАЗНИЦА

  1. BeanFactory Instantiate боб при вызове getBean() метод в то время как ApplicationContext экземпляр Singleton боб при запуске контейнера, он Безразлично» t ждать вызова getBean().

  2. BeanFactory не обеспечивает поддержку интернационализации, но ApplicationContext обеспечивает поддержку.

  3. Еще одно различие между BeanFactory против ApplicationContext является возможность публиковать события в бобах, которые зарегистрированы в качестве слушателя.

  4. Одним из популярных реализации интерфейса BeanFactory является XmlBeanFactory в то время как один из популярных реализации интерфейса ApplicationContext является ClassPathXmlApplicationContext.

  5. Если вы используете автоматическую проводку и используя BeanFactory, чем вам нужно зарегистрировать AutoWiredBeanPostProcessor с помощью API, который можно настроить в XML, если вы используете ApplicationContext. В итоге BeanFactory нормально для тестирования и неприменение производства, но ApplicationContext более многофункциональная реализация контейнера и следует отдавать предпочтение более BeanFactory

  6. BeanFactory по умолчанию его поддержка Ленивый загрузки и ApplicationContext по умолчанию поддержка Aggresive loading.

Смежные вопросы