BeanFactory接口是IOC容器的最底层接口,定义了Bean容器管理的基本方法。有多个子接口继承BeanFactory,扩展BeanFacatory的功能。ApplicationContext除了具备BeanFactory的基本功能外,通过继承和扩展,提供了环境、国际化等多个扩展服务。
FactoryBean是一个bean,跟其它bean一样。也是是受BeanFactory管理的。它跟其它bean的区别在于,当Bean容器创建出来一个FactoryBean后,它会判断当前创建的bean是否是一个FactoryBean,如果是一个FactoryBean,它会做进一步的处理,根据配置文件中的target、advisor和interfaces等信息,在运行期动态构建出来一个类,最后将该类的实例返回给客户端。因此,我们在通过id声明一个FactoryBean。通过id获取到的并非是FactoryBean的实例,而是它动态生成的一个代理对象。