Skip to content

HuTool工具类

Hutool 是一个功能丰富且易用的Java工具库,通过诸多实用工具类的使用,旨在帮助开发者快速、便捷地完成各类开发任务。 这些封装的工具涵盖了 字符串数字集合编码日期文件IO加密数据库JDBCJSONHTTP客户端 等一系列操作, 可以满足各种不同的开发需求。

包含组件

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。更多详细功能请前往 官方文档 查阅。

模块介绍
hutool-aopJDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache简单缓存实现
hutool-core核心,包括Bean操作、日期、各种Util等
hutool-cron定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto加密解密模块,提供对称、非对称和摘要算法封装
hutool-dbJDBC封装后的数据操作,基于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-jsonJSON实现
hutool-captcha图片验证码实现
hutool-poi针对POI中Excel和Word的封装
hutool-socket基于Java的NIO和AIO的Socket封装
hutool-jwtJSON Web Token (JWT)封装实现

可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块,在项目的 pom.xmldependencies 中加入以下内容:

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"
  }
}

小蚂蚁云团队 · 提供技术支持

小蚂蚁云 新品首发
新品首发,限时特惠,抢购从速! 全场95折
赋能开发者,助理企业发展,提供全方位数据中台解决方案。
获取官方授权