springmvc控制器controller单例问题
来源:互联网 发布:服务器端口怎么关闭 编辑:程序博客网 时间:2024/05/01 04:23
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控制器)
- Struts2安全漏洞频出 ,多因Apache官方代码编写不严谨
- Application、Activity、Service和Context之间的构建关系
- Tcpreplay让协议测试从此无忧
- EMMC Response
- bash: __vte_prompt_command: command not found解决办法
- springmvc控制器controller单例问题
- Nginx+Tomcat搭建高性能负载均衡集群
- UNITY 2D入门基础教程 (一)
- 实现只能同时一个人登陆管理后台
- git clone 时 提示 warn:..............: Filename too long
- 架构师之路
- 数组的概述,内存分配,两种数据类型的对比
- 第三个页面 移动端&PC端
- 379.Reorder array to construct the minimum number-将数组重新排序以构造最小值(中等题)