在於朋友的討論中分析到一種場景,即:Controller對於一個類中的靜態變量進行訪問時,若是第一個接口修改該靜態變量的數據,另一個接口獲取該靜態變量的數據,那麼返回的結果是什麼?html
操做步驟是,先進行修改接口的訪問,而後再進行獲取接口的訪問。java
package com.taowd.controller; import com.taowd.util.Constants; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author Taoweidong */ @RestController @RequestMapping("/") public class HelloWorld { /** * @return */ @PostMapping("/set") public String set() { //修改操做 Constants.HELLO_WORLD = "修改以後的數據"; return "已修改"; } /** * @return */ @PostMapping("/get") public String get() { //獲取操做 return Constants.HELLO_WORLD; } }
package com.taowd.util; /** * @author Taoweidong */ public class Constants { /** * 靜態常量. */ public static String HELLO_WORLD = "Hello World"; }
測試使用postman工具進行接口測試web
http://127.0.0.1:8080/get
spring
參考:http://www.javashuo.com/article/p-cyhequdh-dz.htmlspringboot
static變量也稱做靜態變量,靜態變量和非靜態變量的區別是:靜態變量被全部的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態變量是對象所擁有的,在建立對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。app
static成員變量的初始化順序按照定義的順序進行初始化。工具
在Constants類中的HELLO_WORLD變量即被static修飾符修飾,屬於靜態變量,在內存中只有一個副本,當類初次加載時被初始化,後面系統的使用,都是修改查詢這一個副本,所以修改接口被觸發後HELLO_WORLD變量就被修改,而後調用get查詢接口查詢時,獲取的就是修改後的數據。post
歡迎訪問我的博客: http://www.taoweidong.com/測試