Spring MVC Controller单例陷阱 2014-04-12 16:23:20
2015-02-12 00:59
363 查看
Spring MVC Controller单例陷阱
标签:Spring mvc
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。/article/4231844.html
Spring MVC Controller默认是单例的:
单例的原因有二:
1、为了性能。
2、不需要多例。
1、这个不用废话了,单例不用每次都new,当然快了。
2、不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例。
我这里说不需要的原因是看开发者怎么用了,如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了。
因此,只要controller中不定义属性,那么单例完全是安全的。下面给个例子说明下:
0 | 0
1 | 1
2 | 2
3 | 3
4 | 4
改为单例的:
0 | 0
1 | 0
2 | 0
3 | 0
4 | 0
从此可见,单例是不安全的,会导致属性重复使用。
最佳实践:
1、不要在controller中定义成员变量。
2、万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例模式。
标签:Spring mvc
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。/article/4231844.html
Spring MVC Controller默认是单例的:
单例的原因有二:
1、为了性能。
2、不需要多例。
1、这个不用废话了,单例不用每次都new,当然快了。
2、不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例。
我这里说不需要的原因是看开发者怎么用了,如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了。
因此,只要controller中不定义属性,那么单例完全是安全的。下面给个例子说明下:
1 | 1
2 | 2
3 | 3
4 | 4
改为单例的:
0 | 0
1 | 0
2 | 0
3 | 0
4 | 0
从此可见,单例是不安全的,会导致属性重复使用。
最佳实践:
1、不要在controller中定义成员变量。
2、万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例模式。
相关文章推荐
- Spring MVC完成指南(一)Spring MVC MultiActionController
- Spring Web MVC 的HandlerMapping的使用之-------ControllerClassNameHandlerMapping
- (Portal 开发读书笔记)Spring Portlet MVC 测试Controller
- SpringMVC—MultiActionController控制器
- SpringMVC—SimpleFormController的referenceData方法
- SpringMVC MultiActionController的使用-最简化教程
- Spring MVC MultiActionController---多动作控制器
- Spring3参考手册 mvc:view-controller
- 如何让 Spring MVC Controller 的同一个 URL 请求,根据逻辑判断返回 JSON 或者 HTML 视图?
- springMVC+freemarker请求Controller错误
- The flow of MVC in Spring -- Part I -- Dispatcher and Controller
- Spring参考手册 mvc:view-controller
- SpringMVC SimpleFormController学习备忘
- (Portal 开发读书笔记)SpringPortletMVC 中的Controller
- Spring MVC Controller
- ASP.NET MVC 整合 Spring.net(1)- Controller进容器
- Spring3 MVC ---注解基本配置及@controller和 @RequestMapping 常用解释
- spring3.0 MVC 继承SimpleFormController不执行onSubmit方法解决办法。
- SpringMVC—ParameterizableViewController控制器实现跳转页面
- springmvc <mvc:view-controller >