免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Spring MVC Controller單例陷阱

Spring MVC Controller默認(rèn)是單例的:


單例的原因有二:

1、為了性能。

2、不需要多例。


1、這個(gè)不用廢話了,單例不用每次都new,當(dāng)然快了。

2、不需要實(shí)例會(huì)讓很多人迷惑,因?yàn)閟pring mvc官方也沒明確說不可以多例。

  我這里說不需要的原因是看開發(fā)者怎么用了,如果你給controller中定義很多的屬性,那么單例肯定會(huì)出現(xiàn)競(jìng)爭(zhēng)訪問了。

  因此,只要controller中不定義屬性,那么單例完全是安全的。下面給個(gè)例子說明下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.lavasoft.demo.web.controller.lsh.ch5;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * Created by Administrator on 14-4-9.
 *
 * @author leizhimin 14-4-9 上午10:55
 */
@Controller
@RequestMapping("/demo/lsh/ch5")
@Scope("prototype")
public class MultViewController {
    private static int st = 0;      //靜態(tài)的
    private int index = 0;          //非靜態(tài)
    @RequestMapping("/show")
    public String toShow(ModelMap model) {
        User user = new User();
        user.setUserName("testuname");
        user.setAge("23");
        model.put("user", user);
        return "/lsh/ch5/show";
    }
    @RequestMapping("/test")
    public String test() {
        System.out.println(st++ + " | " + index++);
        return "/lsh/ch5/test";
    }
}



0 | 0

1 | 1

2 | 2

3 | 3

4 | 4


改為單例的:

0 | 0

1 | 0

2 | 0

3 | 0

4 | 0


從此可見,單例是不安全的,會(huì)導(dǎo)致屬性重復(fù)使用。


最佳實(shí)踐:

1、不要在controller中定義成員變量。

2、萬(wàn)一必須要定義一個(gè)非靜態(tài)成員變量時(shí)候,則通過注解@Scope("prototype"),將其設(shè)置為多例模式。



本文出自 “熔 巖” 博客,請(qǐng)務(wù)必保留此出處http://lavasoft.blog.51cto.com/62575/1394669

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
spring的controller是單例還是多例,怎么保證并發(fā)的安全。
Spring3 MVC (二)----注解基本配置及@Controller和@Reques...
Springmvc 并發(fā)訪問的線程安全性問題
Spring mvc注解說明
Spring 3 MVC and JSON example
使用 Spring 2.5 基于注解驅(qū)動(dòng)的 Spring MVC
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服