SpringMvc Controller默認是單例


1、springmvc controller默認是單例的

當controller被實例化之后,整個容器中只會有一個實例。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/")
public class AdminController {

    private int x = 1;
    private static int y = 1;

    @RequestMapping("/test")
    @ResponseBody
    public String test(){
        System.out.println("x="+(x++));
        System.out.print(" y="+(y++));
        return "success";
    }
}

運行多次之后,結果如下:

2、將代碼修改,在controller上添加@Scope("prototype")注解之后

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@Scope("prototype")
@RequestMapping("/")
public class AdminController {

    private int x = 1;
    private static int y = 1;

    @RequestMapping("/test")
    @ResponseBody
    public String test(){
        System.out.print("x="+(x++));
        System.out.print(" y="+(y++));
        System.out.println();
        return "success";
    }
}

運行多次之后,結果如下:

prototype在每次調用controller時都會創建一個新的實例,所以x的值一直都是1,而y是靜態變量,靜態變量跟實例是無關的,只跟類有關,是所有對象共有的,所以每運行一次,y的值都會改變


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM