mall :hutool项目源码解析

news2025/1/18 19:00:48

文章目录

    • 一、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,感觉收获颇深,希望这篇文章对你们也会有所帮助。

后续我也会结合该框架学习一下其他的技术栈。

盈若安好,便是晴天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/967256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精品基于SpringCloud实现的电影院购票系统设计-微服务-分布式

《[含文档PPT源码等]精品基于SpringCloud实现的电影院购票系统设计的设计与实现-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:Java 框架:springcloud JDK版…

AI:06-基于OpenCV的二维码识别技术的研究

二维码作为一种广泛应用于信息传递和识别的技术,具有识别速度快、容错率高等优点。本文探讨如何利用OpenCV库实现二维码的快速、准确识别,通过多处代码实例展示技术深度。 二维码作为一种矩阵型的条码,广泛应用于各个领域,如商品追溯、移动支付、活动签到等。二维码的快速…

【力扣】416. 分割等和子集 <动态规划、回溯>

【力扣】416. 分割等和子集 给你一个 只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5,…

nmap的使用

目录 nmap简介 主要作用 nmap原理 namp使用 options nmap列举远程机器开放端口 普通扫描 扫描范围端口 对几个端口探测 对所有端口进行探测 指定协议探测端口 扫描对应协议的所有端口 端口状态 nmap识别目标机器上服务的指纹 服务指纹 识别目标机器服务信息 …

Spring 中存取 Bean 的相关注解

目录 一、五大类注解 1、五大类注解存储Bean对象 1.1Controller(控制器储存) 1.2Service(服务存储) 1.3Repository(仓库存储) 1.4Component(组件存储) 1.5Configuration(配置存储) 2、五大类注解小结 2.1为什么要这么多类注解 2.2 五大类注解之间的关系 二、方法注解 1.方法注…

微信小程序编辑器代码格式缩进设置

第一步点击这个编辑器设置: 然后设置tab为空格,并且设置占几个空格,这里是4个空格。 这样就好了,文件保存就会自动设置好缩进格式了。

【Day-27慢就是快】代码随想录-二叉树-二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 —————————————————————————————————— 1. 递归法 确定单层递归的逻辑: 与最…

3D 碰撞检测

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 轴对齐边界框 与 2D 碰撞检测一样,轴对齐边界框 (AABB) 是确定两个游戏实体是否重叠的最快算法。这包括将游戏实体包装在一个非旋转(因此轴对齐)的框中&#…

可扩展的Blender插件开发汇总

成熟的 Blender 3D 插件是令人惊奇的事情。作为 Python 和 Blender 的新手,我经常发现自己被社区中的人们创造的强大的东西弄得目瞪口呆。坦率地说,其中一些包看起来有点神奇,当自我怀疑或冒名顶替综合症的唠叨声音被打破时,很容易想到“如果有人能做出可以做xxx的东西就好…

【数据分享】2012-2022年中国范围的逐年NPP/VIIRS夜间灯光数据(无需转发\免费获取)

在之前的文章中我们分享了2012-2022年全球范围逐年NPP/VIIRS夜间灯光数据(可查看之前的文章获悉详情)!很多小伙伴在拿到数据后,反映数据太大了,有413G,下载非常不方便!这个数据的范围是全球的&a…

七、Linux中一些符号的含义和宿主目录的介绍

1、Linux中一些符号的含义 在Linux命令行中,会看到如下一些符号,含义如下。 符号含义. 代表当前目录..代表上一层目录,当前目录的父目录-代表前一个目录,刚才从哪个目录cd过来~代表当前用户的宿主目录/代表根目录$普通用户的命…

已解决module ‘pip‘ has no attribute ‘pep425tags‘报错问题(如何正确查看pip版本、支持、32位、64位方法汇总)

本文摘要:本文已解决module ‘pip‘ has no attribute ‘pep425tags‘的相关报错问题,并总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。并且最后说明了如何正确查看pip版本、支持、32位、64位方法汇总 😎 作者介绍&…

elasticSearch+kibana+logstash+filebeat集群改成https认证

文章目录 一、生成相关证书二、配置elasticSearh三、配置kibana四、配置logstash五、配置filebeat六、连接https es的java api 一、生成相关证书 ps:主节点操作 切换用户:su es 进入目录:cd /home/es/elasticsearch-7.6.2 创建文件&#x…

【狂神】MyBatis(第一个Mybatis程序)

今天学了一点大概,但大概只是整个mybatis学习的1/10,我之所以想要重学一遍的原因是,我忘了。哈哈哈,但是以现在的角度去学习,我会更能够理解它的底层知识。希望这篇文章能够帮助你更好的入门。 趁着年轻多多投资自己的…

Android学习之路(12) setContentView详解

一、简介 setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件放在Activity中显示,下面我们根据源码分析setContentView是如何做到的 二、源码分析 1.两种setContentView 注意Activity的setContentView和AppCompatActivity的setCo…

云端笔记系统-自动化测试

文章目录 1. 思维导图编写 Web 自动化测试用例2. 创建测试项目3. 根据思维导图设计【云端笔记】自动化测试用例3.1. 准备工具类3.2. 测试注册页面3.3. 测试登陆页面3.4. 测试添加博客页3.5. 测试我的博客列表页3.6. 测试修改博客页3.7. 测试博客列表页3.8. 测试博客详情页3.9. …

IIS perl python cbrother php脚本语言配置及简单测试样例程序

上篇笔记写了 IIS 配置 CGI, IIS CGI配置和CGI程序FreeBasic, VB6, VC 简单样例_Mongnewer的博客-CSDN博客 这篇在IIS上配置一些脚本语言。为了操作方便,每种语言在站点下分设文件夹。 1. IIS perl配置 Perl CGI方式是曾经流行的做法。先下载一个开源…

[管理与领导-65]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 乌卡时代(VUCA )

前言: 大多数IT人,很勤奋,但都没有职业规划,被工作驱动着前行,然而,作为管理者,你就不能没有职业规划思维,因为你代表一个团队,你的思维决定了一个团队的思维。本文探讨…

【强化学习】贝尔曼公式 - bellman equation

return作用 还是用这个迷宫游戏说。 首先明确,不撞墙到终点比撞墙到终点好。路径越短到终点越好。 不撞墙到终点比撞墙到终点好。你可以把撞墙这个reward设置成负数,不撞墙设置成0。那么在最终return进行累加的时候,不撞墙的return就会大。路…

生信分析Python实战练习 4 | 视频22

开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在:https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…