怎么获取controller返回的结果_SpringMvc问题记录-Controller对于静态变量的访问分析...

问题描述

在于朋友的讨论中分析到一种场景,即:Controller对于一个类中的静态变量进行访问时,如果第一个接口修改该静态变量的数据,另外一个接口获取该静态变量的数据,那么返回的结果是什么?

操作步骤是,先进行修改接口的访问,然后再进行获取接口的访问。

实际验证

创建一个SpringBoot项目,项目结构如下:

5f46692c2f9fb840fe0d68e74a6ef6d0.png

创建Controller接口

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工具进行接口测试

第一次访问get接口查看原数据

http://127.0.0.1:8080/get

10a96c75ddda7079e9f30cee785a1c32.png

第二次访问set接口重新设置静态变量值

ec24d8206f0a4cf040ac79a17e3828a0.png

第三次访问get接口查看静态变量的值

e366b1e0a10f9a8405cb9e0d2a2e4922.png

结果分析

static变量

参考:https://www.cnblogs.com/dolphin0520/p/3799052.html

static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static成员变量的初始化顺序按照定义的顺序进行初始化。

在Constants类中的HELLOWORLD变量即被static修饰符修饰,属于静态变量,在内存中只有一个副本,当类初次加载时被初始化,后面系统的使用,都是修改查询这一个副本,因此修改接口被触发后HELLOWORLD变量就被修改,然后调用get查询接口查询时,获取的就是修改后的数据。

參考

  • https://www.cnblogs.com/dolphin0520/p/3799052.html
  • https://www.cnblogs.com/zxf330301/articles/6105127.html
  • https://www.cnblogs.com/wenhuang/p/9784419.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值