BeanFactoryand adds significant new functionality. The Spring Reference (PDF) recommends using
BeanFactoryin most cases, especially for support of enterprise functionality.
I have run into this difference when using Spring's JMX support. It is a trivial matter to wire Spring beans to an MBean server using an
ApplicationContextsuch as FileSystemXmlApplicationContext or ClassPathXmlApplicationContext.
Another difference between BeanFactory and ApplicationContext is support for Aspect-Oriented Programming (AOP) as discussed in this blog entry related to an omission in the second edition of the book Spring in Action.
Other discussions regarding use of
BeanFactorycan be found in Spring Best Practices, BeanNameAutoProxyCreator and BeanFactory Versus Application Context, Practical Spring (Page 8), Introduction to the Spring Framework, and Overview of the Spring Framework.
The article Spring: Creating Objects So You Don't Have To goes into more depth on