threadLocal的运用

复制代码
 RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();

        //使用哪一个取决于springmvc在保存request信息时具体用的子类,他们通常无父子单独实现、
        //如果有父子可以继承第一个持有的httpServletRequest
        HttpServletRequest request = ((ServletWebRequest) requestAttributes).getRequest();
        //ServletRequestAttributes它是spring的具体保存的实例实现,通过名字和实现目的 接口是属性目的获取请求servlet
//        ServletRequestAttributes它是最上乘的类其他实现者以继承它保存的request并初始出自己的,并提供自己的get和set
         HttpServletRequest request1 = ((ServletRequestAttributes) requestAttributes).getRequest();
        HttpServletRequest request3 = ((StandardServletAsyncWebRequest) requestAttributes).getRequest();

        String requestURI = request.getRequestURI();
        String method = request.getMethod();
        System.out.println(requestURI+method);

抽象类 RequestContextHolder提供静态方法,获取全局的threadlocal对象,对象中存一个请求属性对象接口,该接口有多个实现类,提供顶层接口以外的附加功能,但在springMVC中把请求保存在当前线程的只会有一个实例实现,其他实例通过继承这个实例同样持有到属性接口实例持有的HttpServletRequest对象,通过 RequestContextHolder类为每一个请求到的线程中都加上一个缓存map,值的接口实例持有请求属性,由于是静态的属性所以所有线程可以使用设置自己的值,获取线程之间存值有交集

复制代码
 private static final ThreadLocal<RequestAttributes> requestAttributesHolder = new NamedThreadLocal("Request attributes");
    private static final ThreadLocal<RequestAttributes> inheritableRequestAttributesHolder = new NamedInheritableThreadLocal("Request context");
相关推荐
h***346313 分钟前
spring session、spring security和redis整合的简单使用
redis·spring·bootstrap
哥哥还在IT中1 小时前
缓存架构设计模式:Cache-Aside, Read-Through/Write-Through详解
spring boot·spring·缓存
7ioik3 小时前
什么是线程池?线程池的作用?线程池的四种创建方法?
java·开发语言·spring
李慕婉学姐9 小时前
【开题答辩过程】以《“饭否”食材搭配指南小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring·小程序
没有bug.的程序员11 小时前
Java 字节码:看懂 JVM 的“机器语言“
java·jvm·python·spring·微服务
白露与泡影11 小时前
2025年BAT面试题汇总:JVM+Spring+Dubbo+Redis+并发编程
jvm·spring·dubbo
i***586714 小时前
springboot中配置logback-spring.xml
spring boot·spring·logback
程序猿小蒜17 小时前
基于springboot的人口老龄化社区服务与管理平台
java·前端·spring boot·后端·spring
chushiyunen17 小时前
状态机笔记
spring
v***431720 小时前
spring.profiles.active和spring.profiles.include的使用及区别说明
java·后端·spring