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

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

盈若安好,便是晴天

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】滑动窗口

滑动窗口应用场景 关键词: 满足xxx条件(计算结果,出现次数,同时包含) 最长/最短 子串/子数组/子序列 例如:长度最小的子数组 滑动窗使用思路(寻找最长) 核心:左右双指…

自动驾驶和辅助驾驶系统的概念性架构(一)

摘要: 本文主要介绍包括功能模块图,涵盖了底层计算单元、示例工作负载和行业标准。 前言 本文档参考自动驾驶计算联盟(Autonomous Vehicle Computing Consortium)关于自动驾驶和辅助驾驶计算系统的概念系统架构。 该架构旨在与SAE L1-L5级别的自动驾驶保…

springboot:时间格式化的5种方法(解决后端传给前端的时间格式转换问题)推荐使用第4和第5种!

本文转载自:springboot:时间格式化的5种方法(解决后端传给前端的时间显示不一致)_为什么前端格式化日期了后端还要格式化_洛泞的博客-CSDN博客 时间问题演示 为了方便演示,我写了一个简单 Spring Boot 项目&#xff…

vulnhub渗透测试靶场练习2

靶场介绍 靶场名:easy_cloudantivirus 靶场地址:https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453 环境搭建 依旧使用VM VirtualBox搭建靶场,攻击机使用的是VMware中的kali,需要将VMware虚拟机kali和virtualbox靶机…

HTTPS安全通信和SSL Pinning

随着互联网的迅速发展,网络通信安全问题日益凸显。在这一背景下,HTTPS作为一种加密通信协议得到了广泛应用,以保障用户的数据隐私和信息安全。本文将介绍HTTPS的基本原理、发展历程,以及与之相关的中间人攻击和防护方法。 1. HTT…

windows11 利用vmware17 安装rocky9操作系统

下载相关软件和镜像 vmware17 下载 下载页面 Download VMware Workstation Pro ​ rocky8镜像下载 官网链接:Rocky Linux 下载页面 Download Rocky | Rocky Linux 点击Minimal下载 安装rocky9 选择镜像文件,点击下一步 点击下一步 启动虚拟机 选…

Socket交互的基本流程?

TCP socket通信过程图 什么是网络编程,网络编程就是编写程序使两台连联网的计算机相互交换数据。怎么交换数据呢?操作系统提供了“套接字”(socket)的组件我们基于这个组件进行网络通信开发。tcp套接字工作流程都以“打电话”来生…

黑马 软件测试从0到1 常用分类 模型 流程 用例

课程内容: 1、软件测试基础 2、测试设计 3、缺陷管理 4、Web常用标签 5、项目实战 以终为始,由交付实战目标为终,推出所学知识;从认识软件及软件测试,到如何设计测试、缺陷标准及缺陷管理,最终以项目实战贯…

(动态规划) 剑指 Offer 66. 构建乘积数组——【Leetcode每日一题】

❓ 剑指 Offer 66. 构建乘积数组 难度:中等 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]A[0]A[1]…A[i-1]A[i1]…A[n-1]。不能使用除法。 示例: 输入: [1,2,3…

【Flutter】Flutter 使用 percent_indicator 实现基于百分比显示进度

【Flutter】Flutter 使用 percent_indicator 实现基于百分比显示进度 文章目录 一、前言二、安装和基本使用三、圆形百分比指示器四、线性百分比指示器五、完整示例六、总结 一、前言 今天我要为你介绍一个非常实用的Flutter包——percent_indicator。这个包允许我们基于百分比…

【ES6】Promise.allSettled的用法

Promise.allSettled() 是一个Promise方法,用于处理一个Promise数组,返回一个新的Promise数组,每个元素对应原始Promise的状态。这个方法可以用于处理多个异步操作,并且能够获取每个操作的结果和状态。 下面是Promise.allSettled(…

10. selenium API (二)

目录 1. 多层框架/窗口定位 2. 下拉框处理 2.1 前端界面 2.2 代码 3. 针对 alert 弹窗进行操作 3.1 前端界面 3.2 代码 4. 文件提交 4.1 前端界面 4.2 代码 5. 显示等待 6. 操作浏览器滚动条 7. 截图 8. 浏览器关闭 9. 窗口切换 在上篇文章中,我们学…