Spring provides container implementations with two types :
Bean factories(defined by the org.springframework.beans.factory.BeanFactory interface)
are the simplest of containers, providing basic support for DI.
Application contexts(defined by the org.springframework.context.ApplicationContext interface)
build on the notion of a bean factory by providing application framework services.
BeanFactory
- A bean factory is a general-purpose factory, creating and dispensing many types of beans
- It is able to create associations between collaborating objects as they are instantiated
- A bean factory also takes part in the lifecycle of a bean
- While the bean factory will immediately load the bean definitions, the beans themselves will not be
instantiated until they are needed (lazy loading)
ApplicationContext
- advanced container ApplicationContext is much the same as a BeanFactory, but offers much more
- Because of the additional functionality it provides, an ApplicationContext is preferred over a
BeanFactory in nearly all applications - An application context preloads all singleton beans upon context startup (different from bean factory)