ApplicationContext和BeanFactory的区别

本文详细介绍了Spring框架中的两种IoC容器:ApplicationContext和BeanFactory。解释了它们在实例化bean方面的区别,并探讨了各自的优势和适用场景。



 1.从ApplicationContext中取bean  

   ApplicationContext ac = new ClassPathXmlApplicationContext("/com/bean.xml"); 

   当我们实例化bean.xml时,该文件中配置的bean都会被实例化。(该bean scope是singleton)

 

 2. 从BeanFactory中取bean

  BeanFactory factory= new XmlBeanFactory(new ClassPathResource("/com/bean.xml"));

  factory.getBean("student");   //取bean的时候才会实例化

  当使用beanfactory去获取bean,当你只是实例化该容器,那么容器内的bean不会被实例化,只有当使用某个bean(getBean)时,才会实时去实例化该bean。

 

总结

1.如果使用ApplicationContext,则配置的bean如果是singleton不管你用还是不用,都被实例化。好处是可以预先加载,坏处是浪费内存。

2.BeanFactory,当使用BeanFactory实例化对象时,配置的bean不会马上被实例化。当你使用该bean时才会被实例化(getBean)。好处是节约内存,缺点是速度比较慢。多用于移动设备的开发上。

3.一般没有特殊要求,应当使用ApplicationContext完成。

 

三种获取ApplicationContext对象引用的方法

1.ClassPathXmlApplicationContext 通过类路径。

2.FileSystemXmlApplicationContext 通过文件路径。

    ApplicationContext ac = FileSystemXmlApplicationContext("d:\\com\\bean.xml");

 3.XmlWebApplicationContext:从web系统中加载。



文章出自:http://blog.sina.com.cn/s/blog_5f8ac4b70101jmkc.html

ApplicationContextBeanFactorySpring框架中用于管理配置应用程序组件的核心接口。 BeanFactorySpring的基础设施,它是用于创建管理应用程序中的对象(也称为bean)的根接口。它提供了一种灵活的方式来配置管理bean,可以支持延迟初始化、依赖注入面向切面编程等特性。BeanFactory负责实例化、配置、装配管理bean的生命周期。 ApplicationContextBeanFactory的一个子接口,提供了更多的功能特性。它不仅继承了BeanFactory的所有功能,还提供了更高级的功能,例如国际化支持、事件发布、资源管理、AOP集成、事务管理等。ApplicationContextSpring框架中推荐使用的接口,它更加适合于大多数应用程序。 相比于BeanFactoryApplicationContext有以下优点: 1. 自动化配置:ApplicationContext可以自动检测并加载基于注解或XML配置的bean定义,无需手动配置。 2. 生命周期管理:ApplicationContext可以管理bean的生命周期,包括初始化销毁。 3. AOP支持:ApplicationContext集成了面向切面编程(AOP)功能,可以方便地应用切面逻辑。 4. 事件发布机制:ApplicationContext可以发布监听事件,实现组件之间的解耦。 总之,ApplicationContextBeanFactory的增强版,提供了更多的功能特性,因此在大多数情况下,我们应该使用ApplicationContext来管理配置应用程序组件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值