HuTool工具类
Hutool
是一个功能丰富且易用的Java工具库,通过诸多实用工具类的使用,旨在帮助开发者快速、便捷地完成各类开发任务。 这些封装的工具涵盖了 字符串
、数字
、集合
、编码
、日期
、文件
、IO
、加密
、数据库JDBC
、JSON
、HTTP客户端
等一系列操作, 可以满足各种不同的开发需求。
包含组件
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。更多详细功能请前往 官方文档 查阅。
模块 | 介绍 |
---|---|
hutool-aop | JDK动态代理封装,提供非IOC下的切面支持 |
hutool-bloomFilter | 布隆过滤,提供一些Hash算法的布隆过滤 |
hutool-cache | 简单缓存实现 |
hutool-core | 核心,包括Bean操作、日期、各种Util等 |
hutool-cron | 定时任务模块,提供类Crontab表达式的定时任务 |
hutool-crypto | 加密解密模块,提供对称、非对称和摘要算法封装 |
hutool-db | JDBC封装后的数据操作,基于ActiveRecord思想 |
hutool-dfa | 基于DFA模型的多关键字查找 |
hutool-extra | 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等) |
hutool-http | 基于HttpUrlConnection的Http客户端封装 |
hutool-log | 自动识别日志实现的日志门面 |
hutool-script | 脚本执行封装,例如Javascript |
hutool-setting | 功能更强大的Setting配置文件和Properties封装 |
hutool-system | 系统参数调用封装(JVM信息等) |
hutool-json | JSON实现 |
hutool-captcha | 图片验证码实现 |
hutool-poi | 针对POI中Excel和Word的封装 |
hutool-socket | 基于Java的NIO和AIO的Socket封装 |
hutool-jwt | JSON Web Token (JWT)封装实现 |
可以根据需求对每个模块单独引入,也可以通过引入hutool-all
方式引入所有模块,在项目的 pom.xml
的 dependencies
中加入以下内容:
js
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.36</version>
</dependency>
Redis缓存使用
在 pom.xml
配置文件中引入以下依赖包:
js
<!-- 缓存依赖模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-redis</artifactId>
</dependency>
使用案例如下:
js
package com.xiaomayi.admin.controller.demo;
import com.xiaomayi.redis.core.RedisCache;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
/**
* <p>
* 案例测试 前端控制器
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-26
*/
@Slf4j
@RestController
@RequestMapping("/example")
@AllArgsConstructor
public class ExampleController {
@Autowired
private RedisCache redisCache;
/**
* 缓存功能测试
*/
@GetMapping("/test")
public void test() {
// 1. 设置缓存
redisCache.setCacheObject("value", "123456");
// 2. 设置缓存,有效期5分钟
redisCache.setCacheObject("value", "123456", 5, TimeUnit.MINUTES);
// 获取缓存
String value = redisCache.getCacheObject("value");
System.out.println(value);
// 删除缓存
redisCache.deleteObject("value");
}
}
全局响应函数
在项目中,R.java
是一个常用的全局工具类,用于统一封装 API
响应格式。它通常用于 RESTful API
的开发中,提供了一种标准化的方式来返回成功或失败的响应数据。可以减少重复代码,提高代码的可读性和可维护性。
设计目标
统一响应格式:所有 API 返回的响应格式一致,便于前端处理。
简化代码:通过静态方法快速构建成功或失败的响应。
支持链式调用:方便添加额外的数据或消息。
支持泛型:适应不同类型的返回数据。
js
package com.xiaomayi.core.utils;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 网络响应对象
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-21
*/
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class R<T> implements Serializable {
private static final long serialVersionUID = 1L;
@Getter
@Setter
private int code;
@Getter
@Setter
private String msg;
@Getter
@Setter
private T data;
public static <T> R<T> ok() {
return restResult(null, 0, "操作成功");
}
public static <T> R<T> ok(T data) {
return restResult(data, 0, "操作成功");
}
public static <T> R<T> ok(T data, String msg) {
return restResult(data, 0, msg);
}
public static <T> R<T> failed() {
return restResult(null, 1, "操作失败");
}
public static <T> R<T> failed(String msg) {
return restResult(null, 1, msg);
}
public static <T> R<T> failed(String msg, Integer code) {
return restResult(null, code, msg);
}
public static <T> R<T> failed(T data) {
return restResult(data, 1, "操作失败");
}
public static <T> R<T> failed(T data, String msg) {
return restResult(data, 1, msg);
}
static <T> R<T> restResult(T data, int code, String msg) {
R<T> apiResult = new R<>();
apiResult.setCode(code);
apiResult.setData(data);
apiResult.setMsg(msg);
return apiResult;
}
public boolean isOk() {
return this.code == 0;
}
}
使用案例:
js
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/user")
public R<User> getUser() {
User user = new User(1, "John");
return R.ok(user);
}
}
响应结果:
js
{
"code": 0,
"msg": "操作成功",
"data": {
"id": 1,
"name": "John"
}
}