spring有singleton和prototype作用域

gaojava 2009-01-06 11:54:32
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的生命周期不会被回调以外,它们的作用是不是一样?有什么具体的区别呢,在WEB应用都是一样的吧

我特别想知道如果设置成prototype,SPRING是不管的,系统是怎么回收的?谢谢
...全文
2708 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hasegawa2012 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

request是在一个http请求中建议一个新的实现,但是,只要在同一个request域,无论调用几次都只有一个实现;
prototype是每调用一次都会生成一个新的实现,就算是在同一个request中,调用n次,就有n个实现被生成。
[/Quote]
能具体解答一下吗,什么是请求域,具体使用的时候哪种情况适合request,哪种情况适合prototype呢
jsjnowstudy 2011-05-24
  • 打赏
  • 举报
回复
thk,ok
qcy1121 2010-12-07
  • 打赏
  • 举报
回复
2008-08-22 wangxin0072000 (高级程序员)
request依赖于web应用,request就类似与你的servlet,多个用户访问一个servlet,当然是访问servlet的多个实例,prototype实际上是new出来的,你想想,你的bean里new了一个对象,为什么要让spring给你销毁。prototype没有什么好不好的,只不过它能做singleton所不能做得(创建多个实例),在web项目之外也可以做request所不能做得事。prototype的销毁你不必关心,调用它的bean销毁了,它也就销毁了。request是web里所特有的。看来是java web做多了
songling1018 2010-09-06
  • 打赏
  • 举报
回复
13123123
luojihaidao 2009-02-24
  • 打赏
  • 举报
回复
学习了。
tiffanyisk 2009-02-24
  • 打赏
  • 举报
回复
prototype
一个bean定义对应多个对象实例。
request
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。

gaojava 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 froole 的回复:]
引用 7 楼 gaojava 的回复:
引用 6 楼 SINCE1978 的回复:
设置成prototype就和你自己new一个一样


也就是自己会回收?


无论什么样的实现,都是JVM管理并且自动回收的。
[/Quote]
自己会回收就好,我怕像SESSION一样不自己销掉就会占用大量内存
海诗美妆 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gaojava 的回复:]
引用 6 楼 SINCE1978 的回复:
设置成prototype就和你自己new一个一样


也就是自己会回收?
[/Quote]

无论什么样的实现,都是JVM管理并且自动回收的。
gaojava 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 SINCE1978 的回复:]
设置成prototype就和你自己new一个一样
[/Quote]

也就是自己会回收?
SINCE1978 2009-02-02
  • 打赏
  • 举报
回复
设置成prototype就和你自己new一个一样
gaojava 2009-02-02
  • 打赏
  • 举报
回复
我特别想知道如果设置成prototype,SPRING是不管的,系统是怎么回收的?谢谢
海诗美妆 2009-01-09
  • 打赏
  • 举报
回复
request是在一个http请求中建议一个新的实现,但是,只要在同一个request域,无论调用几次都只有一个实现;
prototype是每调用一次都会生成一个新的实现,就算是在同一个request中,调用n次,就有n个实现被生成。
likgui 2009-01-08
  • 打赏
  • 举报
回复
学习了
gaojava 2009-01-08
  • 打赏
  • 举报
回复
....
gaojava 2009-01-07
  • 打赏
  • 举报
回复
没人回答。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧