1. 程式人生 > >IoC容器篇(十六)——BeanFactory

IoC容器篇(十六)——BeanFactory

目錄

BeanFactory

BeanFactory提供了IoC容器功能的根本基礎,但它只在與第三方框架的整合中使用,對於大多數使用者來說BeanFactory已經成為了歷史。

BeanFactory以及相關的介面(eg:BeanFactoryAware、InitializingBean、DisposableBean)仍然存在於Spring中的主要原因是為了與大量集成了Spring的第三方框架向後相容。

1.BeanFactory or ApplicationContext?

除非有更好的理由不這麼做,否則使用ApplicationContext。

ApplicationContext完全包含了BeanFactory的功能。

Spring大量使用了BeanPostProcessor擴充套件點。如果只使用簡單的BeanFactory,相當數量的功能(eg:AOP與事務)支援將無法運作,至少需要新增額外的步驟。

BeanFactory註冊pos-processor

DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
// populate the factory with bean definitions

// now register any needed BeanPostProcessor instances
MyBeanPostProcessor postProcessor = new MyBeanPostProcessor();
factory.addBeanPostProcessor(postProcessor);

// now start using the factory

BeanFactory註冊BeanFactoryPostProcessor

DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(new FileSystemResource("beans.xml"));

// bring in some property values from a Properties file
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new FileSystemResource("jdbc.properties"));

// now actually do the replacement
cfg.postProcessBeanFactory(factory);

note:BeanFactory的配置與ApplicationContext相比,較為繁瑣不便。