当前位置: 首页 > web >正文

苍穹外卖项目笔记day02

接下来的笔记都会以难点与一些不常见的方法为主,一些重复的crud并不会出现哦

ThreadLocal类

ThreadLocal 并不是一个Thread,而是Thread的局部变量,它用于创建线程局部变量

  • 核心思想:每个线程都有自己独立的变量副本。这意味着,即使多个线程使用同一个 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">ThreadLocal</font>** 对象,它们也无法看到或修改彼此的变量值。这完美地避免了多线程环境下的共享资源竞争问题,无需使用同步(synchronized)。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
  • 简单比喻:就像一个公司(进程)里有多个员工(线程)。公司提供了一个储物柜(**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">ThreadLocal</font>** 对象),但这个储物柜很神奇。每个员工用他的工卡去开这个储物柜时,打开的都是只属于他自己的那个小格子。员工A看不到员工B格子里的东西,反之亦然。这个公共的储物柜(**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">ThreadLocal</font>**)只是提供了访问各自独立空间的“钥匙”或“机制”。

在本项目中,当我们在新增员工的时候,需要表明是谁对新增员工进行了创建和修改,那么我们就需要拿到当前登录用户的Token,并对其解析,就可以得到这两个值

先创建使用静态工具类BaseContext实现ThreadLocal

使用BaseContext进行存储,后续在调用时,只需在调用处使用getCurrentId()方法,便可以动态的得到当前操作的id

分页查询

这样主要使用了PageHelper插件来简化分页代码的开发

select * from employee后面会自动补上limit(),括号内为传递的参数

  • 要使用的依赖:

  • 员工分页查询的实现

时间格式化

对时间字段的显示进行统一的规定的两种方法:

  1. 在属性上加上注解@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”),对日期进行格式化

但这种方式,需要在每个时间属性上都要加上该注解,使用较麻烦,不能全局处理。

  1. 在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式处理

自定义消息转换器,可以对全局的变量有效,因为这是我们自己定义的配置类,会在全局生效

/*** 扩展Spring MVC框架的消息转换器-->主要用于日期* @param converters*/
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器...");//创建一个消息转换器对象MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();//需要为创建的消息转换器对象设置一个对象转换器,对象转换器可以将java对象序列化为json数据messageConverter.setObjectMapper(new JacksonObjectMapper());//将上面的消息转换器对象追加到mvc框架的转换器集合中converters.add(0, messageConverter);
}
http://www.xdnf.cn/news/19412.html

相关文章:

  • Rust 登堂 之 Sized和不定长类型 DST(七)
  • leetcode刷题记录08——top100题里的5道中等题
  • Vue基础知识-methods事件绑定(@事件名和v-on:事件名)和常用事件修饰(.prevent/.stop/.once/.enter)
  • Coze源码分析-API授权-删除令牌-后端源码
  • 【15】VisionMaster入门到精通——--通信--TCP通信、UDP通信、串口通信、PLC通信、ModBus通信
  • 鸿蒙ArkTS 核心篇-16-循环渲染(组件)
  • lvgl模拟器 被放大 导致显示模糊问题
  • Notepad++使用技巧1
  • 日志ELK、ELFK、EFK
  • 快速学习和掌握Jackson 、Gson、Fastjson
  • AI + 行业渗透率报告:医疗诊断、工业质检领域已进入规模化落地阶段
  • GD32入门到实战20--定时器
  • 【LeetCode】大厂面试算法真题回忆(122) —— 篮球比赛
  • react性能优化有哪些
  • SSR降级CSR:高可用容灾方案详解
  • Android中handler机制
  • 【Android】JSONObject和Gson的使用
  • HTTP的概念、原理、工作机制、数据格式和REST
  • 《C++——makefile》
  • 三重积分的性质
  • 【MATLAB绘图进阶教程】(2-6)动态绘图制作详解与例程,包括drawnow、pause、getframe、video write等命令
  • 机器学习时间序列算法进行随机划分数据是不合适的!
  • Dify1.8.0最新版本安装教程:Ubuntu25.04系统本地化安装部署Dify详细教程
  • 移动零,leetCode热题100,C++实现
  • IP-Guard支持修改安全区域密级文字和密级级数
  • 嵌入式学习日记(38)HTTP
  • Java学习笔记-多线程基础
  • Kafka 4.0 生产者配置全解析与实战调优
  • Go语言流式输出实战:构建高性能实时应用
  • 数据结构(力扣刷题)