ApplicationContext和BeanFactory都是加载bean的,但是ApplicationContext包含BeanFactory的所有功能,并且提供更多的扩展功能;
以下为ApplicationContext加载bean的工作流程:
实例化bean的流程和xmlbeanfactory实例化流程一样,请参考:https://www.cnblogs.com/eason-ou/p/12052670.html
这里对beanfactory‘做功能填充进行说明:
1.增加SpEL语言的支持;例如#{}取属性值
2.增加多属性编辑器的支持;例如对Date类型字段的转换
3.增加对一些内置类的注入;例如一些实现了Aware接口的类,注入相应的资源,本质原理是使用BeanPostProcessor实现感知接口的处理。
4.增加对AspectJ的支持
这里对激活各种beanfactory处理器步骤作以下说明:
BeanFactoryPostProcessor作用的是整个BeanFactory容器的修饰,BeanPostProcessor作用的是每个bean的修饰。