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

苍穹外卖项目笔记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.dtcms.com/a/358600.html

相关文章:

  • 嵌入式学习笔记--LINUX系统编程--DAY03进程控制
  • 在 .NET Core 中实现基于策略和基于角色的授权
  • 【系列10】端侧AI:构建与部署高效的本地化AI模型 第9章:移动端部署实战 - iOS
  • SpringAI应用开发面试剧本与技术知识全解析:RAG、向量数据库、多租户与企业落地场景
  • 【工具类】ssh使用案例
  • 26届秋招开始啦
  • UE5多人MOBA+GAS 56、WSL + Docker 编排 Linux 服务器与 Windows 客户端
  • 【PCIE系列】1---PCIE系统拓扑结构分析
  • 基于TCN-BiLSTM-SelfAttention神经网络的多输入单输出回归预测【MATLAB】
  • 得物25年春招-安卓部分编程题
  • Odoo与Django 的区别是什么?
  • Ztero文献管理工具插件设置——亲测有效
  • Python实现点云AABB和OBB包围盒
  • 合金电阻选型7大原则-华年商城
  • 趣味学RUST基础篇(结构体方法)
  • 软考中级习题与解答——第一章_数据结构与算法基础(2)
  • 线性代数理论——状态空间
  • uniapp开发 移动端使用字符串替换注意事项
  • CrystalDiskInfo 9.0 最新版安装步骤详解(从下载到查看硬盘状态)​
  • 三重积分的对称性
  • React前端开发_Day6-Day9_极客园项目
  • Spring Data Redis 的使用方法
  • Dify工作流之合同信息提取
  • 【C++】AVL树(详解)
  • Coze源码分析-API授权-获取令牌列表-前端源码
  • Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践
  • 逆向思维下,如何把基金投资做亏?
  • 佛山B2B企业GEO搜索优化科普指南
  • 模拟实现STL中的list容器
  • vue中的与,或,非