在于朋友的讨论中分析到一种场景,即: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/测试