您的位置:首页 > 编程语言 > Java开发

springmvc controller单实例

2015-08-06 15:58 597 查看
Spring MVC Controller默认是单例的,为了提高性能(这个不用废话了,单例不用每次都new,当然快了。)如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了。因此,只要controller中不定义属性,那么单例完全是安全的。下面给个例子说明下:

@Controller
public class MultViewController {
    private static int st = 0;      //静态的
    private int index = 0;          //非静态

    @RequestMapping("/test")
    public String test() {
        System.out.println(st++ + " | " + index++);
        return "/lsh/ch5/test";
    }
}
默认单实例下,输出结果:

0 | 0

1 | 1

2 | 2

3 | 3

4 | 4

在类上添加@Scope("prototype"),改为多实例,输出结果:

0 | 0

1 | 0

2 | 0

3 | 0

4 | 0

那么,接下来的问题来了?在controller中注入service、在service中注入dao,dao中有数据的连接,如果默认使用的是单实例,那么会不会造成线程安全性问题?

答案肯定是不会的。因为spring使用了localthread技术。详情,请看下篇博客。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: