同方面的区别:
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,载入多个上下文,使得每一个上下文都专注于一个特定的层次
这篇博客探讨了Spring框架中BeanFactory和ApplicationContext的区别。BeanFactory采用延迟加载,只在需要时实例化bean,可能导致配置问题不易察觉;而ApplicationContext在启动时初始化所有bean,能尽早发现配置错误但占用更多内存。ApplicationContext还支持国际化、统一资源访问、事件监听、多配置文件加载和多上下文等功能。此外,它自动注册BeanPostProcessor和BeanFactoryPostProcessor。
461

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



