真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringMVCController單例陷阱是什么

Spring MVC Controller單例陷阱是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

10年積累的成都網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有梅州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

以下是測(cè)試步驟,代碼與結(jié)果.

1. 如果是單例類型類的,那么在Controller類中的類變量應(yīng)該是共享的,如果不共享,就說(shuō)明Controller類不是單例。以下是測(cè)試代碼:

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

public class ExampleAction {

    private int singletonInt=1;

     @RequestMapping(value = "/test")

     @ResponseBody

     public String singleton(HttpServletRequest request,

             HttpServletResponse response) throws Exception {

         String data=request.getParameter("data");

         if(data!=null&&data.length()>0){

             try{

              int paramInt= Integer.parseInt(data);

             singletonInt = singletonInt + paramInt;

             }

             catch(Exception ex){

                 singletonInt+=10;

             }

         }else{

             singletonInt+=1000;

         }

         return String.valueOf(singletonInt);

    }

}

分別三次請(qǐng)求: http://localhost:8080/example/test.do?data=15

得到的返回結(jié)果如下。

第一次: singletonInt=15

第二次: singletonInt=30

第三次: singletonInt=45

從以上結(jié)果可以得知,singletonInt的狀態(tài)是共享的,因此Controller是單例的。

單例的原因有二:

1、為了性能。

2、不需要多例。

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

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

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

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

package com.lavasoft.demo.web.controller.lsh.ch6;
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/ch6")
@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/ch6/show";
    }
    @RequestMapping("/test")
    public String test() {
        System.out.println(st++ + " | " + index++);
        return "/lsh/ch6/test";
    }
}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


分享文章:SpringMVCController單例陷阱是什么
文章位置:http://weahome.cn/article/jiddgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部