spring的单例和多例

来源:互联网 发布:java计算器功能结构图 编辑:程序博客网 时间:2024/06/05 20:09

单例:只产生一个对象,共享对象的资源;

多例:产生多个对象,对象资源没有联系;


在ssm框架中 service层、dao层、controller层都是默认使用单例模式,只会产生唯一 一个对象。


controller虽然是单例,但不会造成线程阻塞;

http://www.cnblogs.com/vinplezhang/p/5885403.html


spring注解 @scope有4总作用域 

默认是单例模式,即scope="singleton"。另外scope还有prototype、request、session、global session作用域。scope="prototype"多例

http://www.cnblogs.com/qq78292959/p/3716827.html

@scope在不同的位置 产生的效果也不一样,总共分四总情况

1)controller层设置多例,service层不设置 (目前不知道 dao层怎么配置)

两个controller 有包含一个同样的service成员变量。请求两个controller的时候出现的效果:

第一次请求


第二次请求


不管请求几次,两个controller的service对象都是唯一的

2)controller层设置多例,service层也同样设置

第一次请求


第二次请求


每次的请求 都会生成一个service对象

3)controller层不设置多例,service层设置多例

第一次请求


第二次请求


同一个controller的service对象是一样的,不同的controller的service层是不一样的

4)controller层不设置多例,service层不设置多例

第一次请求


第二次请求


所有的service对象都是一样的


总结:scope控制的是类的对象创建

原创粉丝点击