springboot优先级和ThreadLocal

什么是ThreadLocal

  • 定义:ThreadLocal 是线程的局部变量,为每个线程提供单独一份存储空间,具有线程隔离的效果。
  • 特点:不同的线程之间不会相互干扰。

ThreadLocal的应用场景

  • 数据共享:在同一个线程或同一个请求中进行数据共享。

创建 ThreadLocal 变量

你可以通过直接实例化 ThreadLocal 来创建一个变量:

复制代码
ThreadLocal<String> threadLocal = new ThreadLocal<>();

设置值

使用 set 方法为当前线程设置一个值:

复制代码
threadLocal.set("Hello, ThreadLocal!");

获取值

使用 get 方法获取当前线程的值:

复制代码
String value = threadLocal.get();
System.out.println(value); // 输出: Hello, ThreadLocal!

删除值

使用 remove 方法删除当前线程的值,以避免内存泄漏:

复制代码
threadLocal.remove();

使用初始值

你可以在创建 ThreadLocal 时提供一个初始值,这样在第一次调用 get 方法时会自动设置这个初始值:

复制代码
ThreadLocal<String> threadLocalWithInitialValue = new ThreadLocal<String>() {
    @Override
    protected String initialValue() {
        return "Default Value";
    }
};

Spring Boot 配置的优先级从低到高如下:

  1. application.yaml(忽略)
  2. application.yml
  3. application.properties
  4. Java 系统属性(通过 -Dxxx=xxx 设置)
  5. 命令行参数(通过 --xxx=xxx 设置)

4和5是web设置,命令行参数优先级最高。

相关推荐
快手技术几秒前
快手Klear-Reasoner登顶8B模型榜首,GPPO算法双效强化稳定性与探索能力!
后端
二闹10 分钟前
三个注解,到底该用哪一个?别再傻傻分不清了!
后端
zzywxc78716 分钟前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
用户490558160812521 分钟前
当控制面更新一条 ACL 规则时,如何更新给数据面
后端
林太白23 分钟前
Nuxt.js搭建一个官网如何简单
前端·javascript·后端
yiqiqukanhaiba24 分钟前
STM32学习笔记14-I2C硬件控制
笔记·stm32·学习
码事漫谈25 分钟前
VS Code 终端完全指南
后端
浮灯Foden29 分钟前
算法-每日一题(DAY13)两数之和
开发语言·数据结构·c++·算法·leetcode·面试·散列表
悠哉悠哉愿意39 分钟前
【Python语法基础学习笔记】if语句
笔记·python·学习
淡海水42 分钟前
【原理】Struct 和 Class 辨析
开发语言·c++·c#·struct·class