Spring Bean的作用域,就是配置文件中的“scope”。
在面向对象程序设计中,一般是指对象或变量之间的可见范围。而在Spring容器中则是指其创建的Bean对象相对于其他Bean对象的请求可见范围。
在Spring容器中,一共提供了五种作用域类型:
1、singleton:Spring IoC容器只会创建该Bean定义的唯一实例,单例模式。在Spring IoC 容器中只会存在一个共享的Bean实例,而且所有对于Bean的请求,只要Id与该Bean定义相匹配,则只会返回Bean的同一省。Bean以单实例方式存在。
2、prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例【对于有状态的Bean,应该使用prototype;对于无状态的Bean,应该使用singleton】
3、request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效。
4、session:对于每次HTTP Session,使用session定义的Bean豆浆产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效。
5、globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效。
配置文件示例:
在使用第3、4、5种作用域时,需要在web容器中进行一些而外的配置,因为这三种是与web应用环境相关的:
网友评论