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是不管的,系统是怎么回收的?谢谢
request是在一个http请求中建议一个新的实现,但是,只要在同一个request域,无论调用几次都只有一个实现;
prototype是每调用一次都会生成一个新的实现,就算是在同一个request中,调用n次,就有n个实现被生成。
设置成prototype就和你自己new一个一样
无论什么样的实现,都是JVM管理并且自动回收的。