Spring学习注意事项

从ApplicationContex应用上下文容器中获取bean和从bean工厂容器中获取bean:
具体案例:
//从ApplicationContext中取bean
ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
//当我们去实例化beans.xml,该文件中配置的bean被实例化(该bean scope是 singleton)从bean中取出student
//如果我们使用beanfactory去获取bean,当你只是实例化该容器, 那么容器的bean不被实例化,只有当你去使用getBean某个bean时,才会实时的创建.
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
factory.getBean("student");
结论:
如果使用ApplicationContext ,则配置的bean如果是 singleton不管你用不用,都被实例化.(好处就是可以预先加载,缺点就是耗内存)
如果是 BeanFactory ,则当你获取beanfacotry时候,配置的bean不会被马上实例化,当你使用的时候,才被实例(好处节约内存,缺点就是速度)
规定: 一般没有特殊要求,应当使用ApplicationContext完成(90%)

bean 的  scope的细节:
<bean scope=“singleton|prototype|request|session|global session” />
singleton: 单例 默认值,在每个Spring IoC容器中一个bean定义对应一个对象实例。
prototype: 原型  一个bean定义对应多个对象实例。
request: 一次请求有效( java web开发中)
session: session级有效(java web开发中)
global session:该作用域仅在基于web的Spring ApplicationContext情形下有效。

三种获取ApplicationContext 对象引用的方法:
ClassPathXmlApplicationContext : 通过类路径
FileSystemXmlApplicationContext : 通过文件路径
举例:
ApplicationContext ac=new FileSystemXmlApplicationContext("文件路径beans.xml / applicationContext.xml");
XmlWebApplicationContext : 从web系统中加载

猜你喜欢

转载自chenzheng8975.iteye.com/blog/1686079
今日推荐