同方面的区别:
Bean工厂使用延迟加载形式来注入bean,只有在使用到相应bean时才会加载实例化,这样无法发现spring的配置问题
ApplicationContext在容器启动时,一次性创建了所有bean,就可以更早发现spring的配置问题,另一方面也占用了内存空间,程序启动较慢。
BeanFactory通常以编程的方式被创建,ApplicationContext还能以声明的方式创建。
对于BeanPostProcessor,BeanFactoryPostProcessor,BeanFactory是手动注册,ApplicationContext是自动注册。
ApplicationContext的其他功能:
1,继承MessageSource,支持国际化
2,统一的资源文件访问方式。
@Autowired
private ApplicationContext applicationContext;
Resource resource = applicationContext.getResource("classpath:com/springdemo/resource/test.txt")
3,提供在监听器中注册bean的事件(这个有点难理解。。。)
4,同时加载多个配置文件
5,载入多个上下文,使得每一个上下文都专注于一个特定的层次