首先要明白的是,BeanFactory仅仅提供基本的IOC和AOP功能,在BeanFactory启动过程并不会注册ApplicationContextAwareProcessor之类的扩展接口,因此即使你的程序实现了这些扩展接口,容器并不会自动注册,要是这些扩展接口生效,你必须在代码中手动注册,然后调用getBean才会生效。
而ApplicationContext则会在启动过程自动注册这些接口,并在实例化Bean的时候(getBean)调用这些接口。
ApplicationContext实例化的大致步骤如下:

这个过程中,将会有一些列的扩展接口被注册进容器中,以便在合适的时候调用(一般是在getBean的时候),主要涉及接口如下:
BeanFactoryPostProcessor
各种Aware
BeanPostProcessor
隐藏的一些特殊功能
本文探讨了BeanFactory与ApplicationContext的区别,特别是在IOC(控制反转)及AOP(面向切面编程)功能上的不同。BeanFactory仅提供基本功能,而ApplicationContext在启动时会自动注册扩展接口。
1万+

被折叠的 条评论
为什么被折叠?



