springmvc httprequest 使用@Autowired注解
2024-09-04 08:35:29
springmvc httprequest 使用@Autowired注解我一直有个疑问,就是注解后每次的httprequest 是不是都一样的了,然后会不会引发多线程问题?
代码如下:
import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class TestController{ @Autowired
HttpServletRequest request1;//这样使用,request1每次进来都是Current Request @RequestMapping("/test1")
public void test(){
System.out.println("test1request1:"+request1.hashCode());
System.out.println("test1"+request1.getParameter("name"));
} @RequestMapping("/test2")
public void test2(String name){
System.out.println("request2request2:"+request1.hashCode());
System.out.println("test2"+request1.getParameter("name"));
} @RequestMapping("/test3")
public void test3(HttpServletRequest request){
//这样进来request每次都不一样
System.out.println("request:"+request1.hashCode()); } }
springmvc常见注入HttpServletRequest 是使用方法级别注入的,它的基本思想是一个请求就是一个新实列HttpServletRequest,所以不会出现所谓多线程问题,毕竟是局部变量控制了。
而我们使用@Autowired来注入一个全局实例是否会出现多线程问题?跟踪源码,发现当前注入每次Current Request,然后这个request其实保存在一个ThreadLocal中的,这样其实它的底层实现方法就是针对每次来的request都保存在一个ThreadLocal中,然后去取,所以这样写代码是没有问题的。
总结一下两种写法都没有问题。但是用得最多的是第一种写法,毕竟我们还是要顺着springmvc的设计初衷考虑,还有从多线程设计思路及代码思路考虑,尽量不要用全局变量。因为这容易引入并发问题......
最新文章
- Node基础篇(概要)
- Android -- 使用ViewPager实现画廊效果
- StackOverflowError 和 OutOfMemoryError
- Apache 目录权限
- Application.EnableVisualStyles();
- 从汇编看c++中指向成员变量的指针(一)
- 每日一帖示例程序(使用TWebBrowser基于HTML做)
- linux上安装配置samba服务器
- Centos 7.3 安装配置 PostgreSQL 9.x
- [学习OpenCV攻略][002][Ubuntu下OpenCV安装]
- UNIX网络编程——SOCKET API和TCP STATE的对应关系_三次握手_四次挥手及TCP延迟确认
- 脚本添加crontab任务
- 获取Vue的实例方法
- 关于《common-net》的ftp上传
- python全栈开发day71-ajax
- post方式接口测试(二)_参数化
- PHP 获取给定时间的周日时间或月末时间或每天
- [js] Array.slice和类数组转数组
- :代理模式:proxy
- shell环境变量
热门文章
- 《java编程思想》:第五章,初始化与清理
- 机器学习:simple linear iterative clustering (SLIC) 算法
- PS 滤镜— —水波效果
- 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论
- Happy Great BG-卡精度
- 使用superobject 新建Json数据(数组)
- asp.net mvc cookie超时返回登录页面问题
- 双击jar不能运行的解决方法
- 微信小程序开发之下拉菜单
- array mysql_fetch_row(resource result)