SpringMVC控制器controller单例问题
来源:互联网 发布:mobi for mac 编辑:程序博客网 时间:2024/05/22 05:27
springmvc controller默认的是单例singleton的,具体可以查看注解scope可以一目了然。
单例的原因有二:
1、为了性能。
2、不需要多例。
1、这个不用废话了,单例不用每次都new,当然快了。
2、不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例。
我这里说不需要的原因是看开发者怎么用了,如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了。
因此,只要controller中不定义属性,那么单例完全是安全的。下面给个例子说明下:
@Controller@RequestMapping("/demo")public class MultViewController { private static int st = 0; //静态的 private int index = 0; //非静态 @RequestMapping("/test") public void test() { System.out.println(st++ + " | " + index++); }}
默认单例的,随着请求次数的增加:
0 | 0
1 | 1
2 | 2
3 | 3
4 | 4
...
controller增加注解:
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
此时,无论多少次请求,结果为:
0 | 0
1 | 0
2 | 0
3 | 0
4 | 0
...
从以上很容易看出,单例是线程不安全的,会导致属性的重复性利用。
最佳实践:
1、不要在controller中定义成员变量。
2、万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例模式
转载自 http://lavasoft.blog.51cto.com/62575/1394669
阅读全文
0 0
- springmvc控制器controller单例问题
- springmvc控制器controller单例问题
- springmvc控制器controller单例问题
- SpringMVC控制器controller单例问题
- springmvc控制器controller单例问题
- SpringMVC中controller单例问题
- SpringMVC Controller单例陷阱
- springMVC源码--Controller控制器
- SpringMVC之控制器controller
- SpringMVC Controller单例和多例
- SpringMVC Controller单例和多例
- SpringMVC的Controller单例线程安全问题
- 【SpringMVC】控制器Controller(七)
- SpringMVC--Controller接口控制器详解
- springmvc controller单实例
- springMVC的controller单例和多例下成员变量的问题
- springmvc(二) 控制器Controller及乱码问题和日期问题的解决
- springMVC学习笔记三(controller控制器)
- xcode9无线调试都在这里
- HDU1091
- 图片文件上传(blob)
- 哈希表总结
- android ZXing扫描 返回崩溃问题,图像拉伸
- SpringMVC控制器controller单例问题
- C语言字符串常用函数
- Ubuntu 15.10快速搭建本地源服务器
- 容器的排序-1
- 表单文字个数不同左右对齐方式
- Redis实现分布式session功能的共享
- 侧滑栏&动态添加轮播图下的按钮&shape绘制按钮
- TabLayout滑动和viewPager的联动+drawerLayout的侧拉
- ZigBee基础实验(二)--中断