Springmvc中在controller注入request会有线程安全问题吗

[b]Springmvc中在controller注入request会有线程安全问题吗[/b]


@Controller
public class AController{

@Autowire
HttpServletRequest request;

@RequestMapping("/test")
public Result test(){
System.out.println(request.toString());
request.getHeader("uid");
}
}



1.通过@Autowire注入的HttpServletRequest只是一个“空壳”,真正的对象是在被访问到的时候才会从线程中取得的。
2.注入的request对象 是HttpServletRequest类的一个实例, 重复多次http请求,发现这个对象的id始终不变
3.但当我们获取设置里面的值时,会通过一个拦截器SpringExtUtil获取得到当前线程关联的 ”ServletRequestAttributes“对象,而获取到的。
4.所以这个是不会因为不同请求改变里面的值面引起线程安全问题的。
5.可以理解为每个请求的HttpServletRequest都是一个与线程关联的实例化。


参考原文:[url]https://my.oschina.net/sluggarddd/blog/678603?fromerr=XhvpvVTi[/url]
参考原文:[url]http://www.th7.cn/Program/java/201503/420240.shtml[/url]


public String other(Locale locale, Principal principal)
java.util.Locale:得到当前请求的本地化信息,默认等价于ServletRequest.getLocale(),如果配置LocaleResolver解析器则由它决定Locale,后续介绍;
java.security.Principal:该主体对象包含了验证通过的用户信息,等价于HttpServletRequest.getUserPrincipal()。

这些都是spring MVC实现的,自定义的参数要使用request的get参数方法才能得到

[url]http://jinnianshilongnian.iteye.com/blog/1698916[/url]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值