Spring中的scope配置和@scope注解
来源:互联网 发布:智能推荐算法 编辑:程序博客网 时间:2024/05/08 05:12
Scope,也称作用域,在 Spring IoC 容器是指其创建的 Bean 对象相对于其他 Bean 对象的请求可见范围。在 Spring IoC 容器中具有以下几种作用域:基本作用域(request、prototype),Web 作用域(reqeust、session、globalsession),自定义作用域。
1、Spring 的作用域在装配 Bean 时就必须在配置文件中指明,配置方式如下(以 xml 配置文件为例):
<!-- 具体的作用域需要在 scope 属性中定义 --><bean id="XXX" class="com.XXX.XXXXX" scope="XXXX" />
singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例
prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例
request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效
session:对于每次HTTP Session,使用session定义的Bean豆浆产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效
globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效
其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new 关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。
如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。
2、基于注解开发时,@scope完成bean的作用域配置默认是单例模式(singleton)如果需要设置的话可以修改对应值与以上提到的一致例如:@scope(“prototype”)
- Spring中的scope配置和@scope注解
- Spring中的@scope注解
- Spring中的@scope注解
- Spring中的@scope注解
- Spring中的@scope注解
- Spring注解@Scope("prototype")和xml配置scope="prototype"的意义
- Spring注解@Scope("prototype")
- Spring注解@Scope("prototype")
- Spring注解@Scope("prototype")
- Spring Annotation(注解) @Scope ,@PostConstruct 和@PreDestroy
- spring配置文件中配置Action中的scope
- spring配置scope属性
- Spring 中的 Bean Scope
- spring中的scope
- Spring中的Scope详解
- spring中的scope
- spring中的scope
- spring中的scope详解
- context:component-scan标签的use-default-filters属性的作用以及原理分析
- php集成环信接口
- 后台执行scp命令
- 关于bundle的小知识
- Linux初识
- Spring中的scope配置和@scope注解
- 的的顶顶顶顶顶的
- python核心编程第三版课后习题一
- nodejs web应用服务器搭建(一):跑起你的服务器
- 【Bootstrap】响应式实用工具
- StringUtils详细介绍
- Android studio 使用Gradle发布Android开源项目到JCenter 总结
- OpenStack 类型模板(flavor)
- express app.js文件的简述