mall :hutool项目源码解析
文章目录
- 一、mall开源项目
- 1.1 来源
- 1.2 项目转移
- 1.3 项目克隆
- 二、Hutool工具类库
- 2.1 Hutool 简介
- 三、源码解析
- 3.1 集成与配置
- 3.1.1 导入依赖
- 3.1.2 添加配置
- 3.2 核心工具类
- 3.2.1 AnnotationUtil使用:注解工具类
- 3.2.2 BeanUtil使用:JavaBean的工具类
- 3.2.3 CaptchaUtil使用:图形验证码
- 3.2.4 ClassPath单一资源访问类:在classPath下查找文件
- 3.2.5 CollUtil使用:集合工具类
- 3.2.6 Convert使用:类型转换工具类
- 3.2.7 DateUtil使用:日期时间工具
- 3.2.8 DigestUtil使用:摘要算法工具类
- 3.2.9 HttpUtil使用:Http请求工具类
- 3.2.10 JSONUtil使用:JSON解析工具类
- 3.2.11 MapUtil使用:Map工具类
- 3.2.12 NumberUtil使用:数字处理工具类
- 3.2.13 ReflectUtil使用:Java反射工具类
- 3.2.14 SecureUtil使用:加密解密工具类
- 3.2.15 StrUtil使用:字符串工具
- 3.2.16 Validator使用:字段验证器
- 四、总结
一、mall开源项目
1.1 来源
mall学习教程,架构、业务、技术要点全方位解析。mall项目(50k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。
项目github地址: github.com
1.2 项目转移
可以把github上的项目转移到gitee上,方便克隆到idea。
具体步骤如下:
1.3 项目克隆
由于github部署在国外,虽然idea也支持从github上拉取,但是克隆速度太慢,所以才推荐上述导入gitee后在克隆项目到idea。
具体的克隆步骤过于简单和常规化,读者可自行完成,或百度一下~
二、Hutool工具类库
API文档
: Overview (hutool-码云(gitee.com))
hutool开发文档
: Hutool (开发时遇到需求在自行查文档,先有个印象)
2.1 Hutool 简介
Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
三、源码解析
mall-tiny-hutool
项目源码只是展示了一些开发中常用的工具包,其它没有展示的可以自行了解上方的hutool开发文档
,文档讲的挺详细的。
**解析内容:**下方的解析内容大部分在图中解释,外面就不做过多的阐述。
3.1 集成与配置
直接拿源码分析,只分析与hutool有关的部分,设计业务部分不做过多的描述,其它部分读者请自行看源码分析。
**项目启动:**只需要启动mall-tiny-hutool
模块的部分即可。
**启动所需:**启动mysql5的服务,创建数据库,并导入表(sql文件位置在,项目同级目录的document
文件夹里)。
**ps:**记得修改数据库连接的配置信息。
3.1.1 导入依赖
在pom文件
中导入hutool的相关依赖。
3.1.2 添加配置
3.2 核心工具类
对于swagger接口文档
,由于接口都是get请求
,且返回的都是操作成功和null数据,就不做过多的展示,只展示一次,了解接下来有那些工具类的使用。
下面的例子
都是该工具类的一小部分,我是先看完官方的开发文档在对代码分析的,建议看到那个工具类就把相应的官方文档看一遍,加深印象。
3.2.1 AnnotationUtil使用:注解工具类
注解工具类开发文档定位
:注解工具-AnnotationUtil | Hutool
1、控制层接口
方法中使用了 AnnotationUtil 工具类来获取指定类上的注解信息,包括注解列表和注解的属性值,并将结果打印出来
2、idea控制台打印的日志信息
3.2.2 BeanUtil使用:JavaBean的工具类
Bean工具类开发文档定位
: Bean工具-BeanUtil | Hutool
1、控制层接口
2、idea控制台打印的日志信息
3.2.3 CaptchaUtil使用:图形验证码
CaptchaUtil工具类开发文档定位
: 概述 | Hutool
1、控制层接口
2、生成图形验证码效果
3.2.4 ClassPath单一资源访问类:在classPath下查找文件
ClassPath工具类开发文档定位
: ClassPath资源访问-ClassPathResource | Hutool
1、控制层接口
2、idea控制台打印的日志信息
3.2.5 CollUtil使用:集合工具类
CollUtil工具类开发文档定位
: 集合工具-CollUtil | Hutool
1、控制层接口
2、idea控制台打印的日志信息
3.2.6 Convert使用:类型转换工具类
Convert工具类开发文档定位
: 类型转换工具类-Convert | Hutool
1、控制层接口
3.2.7 DateUtil使用:日期时间工具
DateUtil工具类开发文档定位
: 日期时间工具-DateUtil | Hutool
1、控制层接口
3.2.8 DigestUtil使用:摘要算法工具类
DigestUtil工具类开发文档定位
: 摘要加密-Digester | Hutool
官方开发文档还有很多其他的加密算法,可自行去了解。
1、控制层接口
2、idea控制台打印的日志信息
3.2.9 HttpUtil使用:Http请求工具类
HttpUtil工具类开发文档定位
: Http客户端工具类-HttpUtil | Hutool
官方开发文档还有很多其他的http客户端的用法,可自行去了解。
1、控制层接口
2、idea控制台打印的日志信息
3.2.10 JSONUtil使用:JSON解析工具类
JSONUtil工具类开发文档定位
: JSON工具-JSONUtil | Hutool
官方开发文档还有JSON对象和JSON数组的用法,可自行去了解。
1、控制层接口
2、idea控制台打印的日志信息
3.2.11 MapUtil使用:Map工具类
MapUtil工具类开发文档定位
: Map工具-MapUtil | Hutool
官方开发文档还有Map的其它用法,可自行去了解。
1、控制层接口
3.2.12 NumberUtil使用:数字处理工具类
NumberUtil工具类开发文档定位
: 数字工具-NumberUtil | Hutool
1、控制层接口
3.2.13 ReflectUtil使用:Java反射工具类
ReflectUtil工具类开发文档定位
: 反射工具-ReflectUtil | Hutool
1、控制层接口
2、idea控制台打印的日志信息
3.2.14 SecureUtil使用:加密解密工具类
SecureUtil工具类开发文档定位
: 加密解密工具-SecureUtil | Hutool
1、控制层接口
3.2.15 StrUtil使用:字符串工具
StrUtil工具类开发文档定位
: 字符串工具-StrUtil | Hutool
1、控制层接口
3.2.16 Validator使用:字段验证器
Validator工具类开发文档定位
: 字段验证器-Validator | Hutool
1、控制层接口
2、idea控制台打印的日志信息
四、总结
感想是:先出糙的了解一下,当业务需要,先查看
官方的开发文档,若果未解决就可以以开发文档为导向,来定位到
API文档,从而完成业务,
本文是有我先从实际项目中获取需求,从而对Hutool工具类库的学习,结合源码来学习,从mall
开源项目中学习Hutool,感觉收获颇深,希望这篇文章对你们也会有所帮助。
后续我也会结合该框架学习一下其他的技术栈。
盈若安好,便是晴天
相关文章:

mall :hutool项目源码解析
文章目录 一、mall开源项目1.1 来源1.2 项目转移1.3 项目克隆 二、Hutool工具类库2.1 Hutool 简介 三、源码解析3.1 集成与配置3.1.1 导入依赖3.1.2 添加配置 3.2 核心工具类3.2.1 AnnotationUtil使用:注解工具类3.2.2 BeanUtil使用:JavaBean的工具类3.2…...

【网络编程】TCP传输控制协议(Transmission Control Protocol)
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...

云原生Kubernetes:kubectl管理命令
目录 一、理论 1.kubectl 管理命令 2.项目的生命周期 二、实验 1.kubectl 管理命令 2.项目的生命周期 三、总结 一、理论 1.kubectl 管理命令 (1)陈述式资源管理方法 kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口…...
前端面试的话术集锦第 5 篇:高频考点( 类型转换 深浅拷贝 模块化机制等)
这是记录前端面试的话术集锦第五篇博文——高频考点(类型转换 & 深浅拷贝 & 模块化机制等),我会不断更新该博文。❗❗❗ 1. typeof类型判断: typeof是否能正确判断类型? instanceof能正确判断对象的原理是什么 typeof对于原始类型来说,除了null都可以显示正确的类…...
微服务·架构组件之网关
微服务架构组件之网关 引言 微服务架构已成为构建大型和复杂应用程序的流行范式之一。在微服务架构中,通常一个系统会被拆分为多个微服务,如果 客户端多次请求不同的微服务,会增加客户端代码和配置的复杂性,维护成本比较高。每…...
Google 开源库Guava详解
一、概述 Guava是一组来自Google的核心Java库,包括新的集合类型(如多映射和多集)、不可变集合、图库和并发、I/O、哈希、原语、字符串等实用程序!它广泛用于Google中的大多数Java项目,也被许多其他公司广泛使用。 Gua…...

ISP——3A算法
目录 前沿一. 自动曝光AE1.1. 自动曝光1.2. 18%灰1.3. 测光区域1.4. 摄影曝光加法系统1.5. AE算法1.5.1. 考虑事项1.5.2. AE实现过程 1.6. AE算法 二. 自动对焦AF2.1. 什么是自动对焦2.2. 图像清晰度评价方法2.2.1. Brenner 梯度函数2.2.2. Tenengrad 梯度函数2.2.3. Laplacian…...
Go语言入门指南
Go语言入门指南 Go语言,通常称为Golang,是一门由Google开发的开源编程语言。它因其简洁、高效和强大的特性而备受开发者欢迎。本篇博客将带你深入了解Go语言的基础知识,让你能够开始编写自己的Go程序。 为什么选择Go语言? 在学…...

【Hive SQL 每日一题】统计用户连续下单的日期区间
文章目录 测试数据需求说明需求实现 测试数据 create table test(user_id string,order_date string);INSERT INTO test(user_id, order_date) VALUES(101, 2021-09-21),(101, 2021-09-22),(101, 2021-09-23),(101, 2021-09-27),(101, 2021-09-28),(101, 2021-09-29),(101, 20…...
RabbitMQ 镜像集群部署
镜像集群原理 特征 默认情况下,队列只保存在创建该队列的节点上。而镜像模式下,创建队列的节点被称为该队列的主节点,队列还会拷贝到集群中的其它节点,也叫做该队列的镜像节点。 但是,不同队列可以在集群中的任意节…...
SpringMVC框架学习
java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 【黑马程序员pink老师前端】HTML 【黑马程序员pink老师前端】JavaScript基础大总结 【黑马程序员pink老师前端】JavaScript函数与作用域 【黑马程序员pink老师前端】JavaScript对象 数据库 【黑马程…...

多通道振弦数据记录仪应用桥梁安全监测的解决方案
多通道振弦数据记录仪应用桥梁安全监测的解决方案 城市化进程的加快和交通运输的发展,桥梁作为连接城市的重要交通工具,其安全性也变得越来越重要。为了保证桥梁的安全性,需要进行定期的监测和维护。其中,多通道振弦数据记录仪是…...

RDMA 相关bug记录
对于 Client 来讲,setupConnection 中的 cm_id 应该是本地的,意味着后续 create pd \ cq \ qp 等等传入的 cm_id 都是本地 id。但是对于 Server 来讲,收到 client 的链接请求时将 client 的 cm_id 传入 setupConnection,意味着后续…...
TDengine函数大全-时序库特有函数
以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 时序库特有函数 TDengine函数大全CSUMDERIVATIVEDIFF…...

vue-cli3项目本地启用https,并用mkcert生成证书
在项目根目录下的vue.config.js文件中: // vue.config.js module.exports {devServer: {host:dev.nm.cngc// 此处开启 https,并加载本地证书(否则浏览器左上角会提示不安全)https: {cert: fs.readFileSync(path.join(_dirname,./cert.crt)…...
包装类笔记
包装类 5.1 概述 Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使…...
TC和TG油封有什么区别?
油封是各种机械系统(包括发动机和工业机械)中的重要部件,因为它们可以防止润滑剂和污染物的泄漏。在可用的不同类型的油封中,常用的是TC和TG密封件。在本文中,我们将讨论TC和TG油封之间的差异,帮助您了解它们的独特特性和应用。 …...

大数据之MapReduce
MapReduce概述 是一个分布式的编程框架,MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 优点: 易于编程,简单的实现一些接口,就可以完成一…...

《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5
我又行了!🤣 求解的 位置 可能会有 变动,根据求得的A填写相应值即可。注意看题目。 coursera链接 文章目录 第1题 Cartesian space求解 题1-3 的 Python 代码 第2题第3题第4题 Joint space求解 题4-6 的 Python 代码 第5题第6题其它可参考代…...

嵌入式面试/笔试C相关总结
1、存储 单片机端编译后分为code ro rw zi几个区域,其中code是执行文件,ro(read only)只读区域,存放const修饰常量、字符串。rw(read write)存放已初始化变量。zi存放未初始化变量。编译完成后bin大小为coderorw。运行时所需内存为rwzi。 在电…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...