spring中获取bean的两种方式

来源:互联网 发布:strcontains php 编辑:程序博客网 时间:2024/05/29 11:53

①通过applicationContext应用上下文对象来获取

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

※当applicationContext.xml被装载后,该文件中配置的bean就被实例化(该bean的scope是singleton)


applicationContext的三种经常用到的实现

1.ClassPathXmlApplicationContext:从类路径中加载

2.FileSystemXmlApplicationContext:从文件系统中加载(使用绝对路径)

3.XmlWebApplicationContext:从web系统中加载


②通过beanFactory来获取

BeanFactory factory = new XmlBeanFactory(new ClassPathResource(applicationContext.xml));

※当xml文件被加载后,配置的bean并没有被实例化,只是实例化了容器对象,只有当通过getBean()使用了某个bean时,才会实时地创建该bean


☆bean的scope范围:singleton,prototype,request,session,global-session

singleton:单例,默认值

prototype:原型

request:一次请求有效(在java web开发中)

session:session(会话)级有效(在java web开发中)

global-session:在web中与spring容器ApplicationContext一致


结论

※如果使用ApplicationContext,则配置的bean如果是singleton,不管你用不用都会被实例化。好处是可以预先加载,缺点就是耗内存

※如果使用了BeanFactory,则当你实例化该对象时,配置的bean不会被马上实例化,当你使用的时候才会被实例化。好处是节约内存,缺点是速度慢

※规定:一般没有特殊要求,应当使用ApplicationContext完成(90%的项目都是如此)

如果是移动设备等内存小的,使用BeanFactory完成