Spring框架中Application context和BeanFactory的区别
Spring框架提供两个IOC容器来管理、配置和操作bean。一个是BeanFactory,另一个是Application Context。
Application context接口扩展了BeanFactory,以增强BeanFactory的功能。
在新的Spring版本中,BeanFactory被ApplicationContext取代。但是,BeanFactory仍然存在,用于向后兼容。
Spring 2.0及以上版本使用BeanPostProcessor扩展点(一个接口,提供一些回调方法,我们可以实现这些方法来定制实例化逻辑、依赖解析逻辑等)。因此,如果您使用的是BeanFactory,则某些功能(例如AOP和事务)在不进行额外配置的情况下将无法工作。
序号 | 关键点 | BeanFactory | Application Context |
---|---|---|---|
1 | 实现 | XMLBeanFactory实现了BeanFactory | FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和AnnotationConfigWebApplicationContext实现了ApplicationContext。 此外,ApplicationContext扩展了BeanFactory |
2 | 注解 | 否 | 是 |
3 | 实例化 | 当调用getBean()方法时,BeanFactory实例化bean。 | Application Context在容器启动时实例化bean。 |
4 | 事件发布 | BeanFactory没有向bean推送事件的能力 | Application Context能够向bean推送事件。 |
5 | 加载机制 | 延迟加载 | 积极加载 |
广告