Spring作用域request和prototype的区别

问题描述

我们知道,spring有singleton和prototype作用域,而且从spring2.0开始,又增加了三种作用域,request、session、global session。session、global session的作用域是HTTP session和全局session。对于request和prototype,每一次请求都会产生一个新的bean实例,那么它们的具体有什么区别呢?而且,Spring不能对一个prototype bean的整个生命周期负责,这一点我不太能理解,这样它占用的资源就很高昂了,那么prototype的好处是什么?要结束它的生命周围,要怎么做?而且,感觉request和prototype,除了prototype的生命周期不会被回调以外,它们的作用是不是一样?有什么具体的区别呢?

解决方案

request依赖于web应用,request就类似与你的servlet,多个用户访问一个servlet,当然是访问servlet的多个实例,prototype实际上是new出来的,你想想,你的bean里new了一个对象,为什么要让spring给你销毁。prototype没有什么好不好的,只不过它能做singleton所不能做得(创建多个实例),在web项目之外也可以做request所不能做得事。prototype的销毁你不必关心,调用它的bean销毁了,它也就销毁了。request是web里所特有的。看来是java web做多了
解决方案二:
还是这里:http://www.blogjava.net/cmzy/archive/2008/07/21/216415.html

时间: 2024-09-17 04:53:26

Spring作用域request和prototype的区别的相关文章

JS构造函数与原型prototype的区别介绍_javascript技巧

构造函数方法很好用,但是存在一个浪费内存 通过原型法分配的函数是所有对象共享的. 通过原型法分配的属性是独立.-----如果你不修改属性,他们是共享 如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函数,这样比较节省内存. 例子: //----构造函数模式 为Cat对象添加一个不变的属性"type"(种类),再添加一个方法eat(吃老鼠).那么,原型对象Cat就变成了下面这样: <script> function Cat(name, color) { this.n

request.Querystring集合和request.Form集合的区别

集合|区别|request 当我们向服务器请求一个页面时,可以附加一些条件(即请求参数).条件的发送有两种方式1.GET方式:直接在URL后缀加条件.如 www.alixixi.com?id=1234    此时,可以用Request.QueryString("id")来获取它的值. 2.POST方式:通过表单的形式填写数据,如在一个表单中有这个输入框<input type="text" name="阿里西西" value="12

javascript面向对象编程:js类定义函数时用不用prototype的区别

一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下: function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCommon2.do1=function(first) { // this.First(); alert("first do"+first); } ListCommon2.prototy

Java Spring各种依赖注入注解的区别

Spring对于Bean的依赖注入,支持多种注解方式: @Resource  javax.annotation  JSR250 (Common Annotations for Java)    @Inject  javax.inject  JSR330 (Dependency Injection for Java)    @Autowired  org.springframework.bean.factory  Spring  直观上看起来,@Autowired是Spring提供的注解,其他几个

java spring str-spring和struts有什么区别

问题描述 spring和struts有什么区别 spring和struts有什么区别?求解!各有什么特点?......... 解决方案 怎么说呢,struts这款框架被发明.被使用初衷就是为了解决我们常说的mvc的问题,它的功能也主要是干这个事情,但是呢目前这种框架其实有很多了,struts的优势已经不再这么明显了:spring呢,它是一个综合型的框架,它可以实现很多功能,当初就是为了证明它也可以做好mvc这一块就出了spring mvc这一个模块作为spring的子模块现在被广泛使用,目前我们

Request和Session的区别

request字面意思理解就是一个请求,比如提交一个表单就是一个请求,打开一个超链接也是一个请求,当请求结束这个request也就消亡了 session字面意思是一个会话,会话的概念就不多说了, 当用户第一次和服务器建立连接时,服务器就会产生一个session直到用户离开或超时(默认是30分钟) 他们能放的东西没任何区别,只是范围不一样而已,前者只能在一次请求中使用,后者只要用户没有关闭浏览器就能使用

Spring singleton bean 与 prototype bean 的依赖

问题 我们知道,Spring bean 默认的 scope 是 singleton(单例),但有些场景(比如多线程)需要每次调用都生成一个实例, 此时 scope 就应该设为 prototype.如: @Component @Scope("prototype") public class DadTask implements Runnable { static Logger logger = Logger.getLogger(DadTask.class); @Autowired Dad

Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的所有方法:(即把数据保存到域中) 主要使用的是方式2和方式3: 方式1:直接获取ServletApi,核心类是ServletActionContext提供的静态的方法; 1 package com.bie.lesson04; 2 3 import javax.servlet.ServletConte

asp下request.querystring(&amp;quot;id&amp;quot;)与request(&amp;quot;id&amp;quot;)区别_应用技巧

Request从几个集合取数据是有顺序的,从前到后的顺序依次是 QueryString,Form,最后是ServerVariables.Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止,后面的就不管了.  现在我们来分析下你得问题.  假设有个页面 test.asp?id=111  这里我们的页面是用GET的方法.这时用request.querystring("id")与request("id")是一样得,应该如果不指定REQUEST得