Scaffold-Boot-3.0框架使用文档Scaffold-Boot-3.0框架使用文档
首页
快速开始
变更记录
Source
首页
快速开始
变更记录
Source
  • 开始
  • 基础

    • 目录结构
    • 代码生成器
    • 增删改查
    • 异常处理
    • Knife4j(Swagger)文档
    • 登录&登出
    • 系统安全
    • 数据字典
    • Excel处理
    • 文件上传下载
    • 工具类
    • 定时任务
    • 微信集成
    • 短信服务
    • 参数配置
    • 接口限流
    • 日志审计
    • 数据脱敏
    • 网站管理
  • AI开发

    • AI项目工程结构
    • MCP服务
    • AI开发模式介绍
  • 开发规范
  • 常见问题
  • 深入

    • 配置详解-Config类
    • 配置详解-Yml配置文件
  • 生命周期

    • SonarQube代码质量保证
    • 部署到测试环境
    • 部署到正式环境
  • 优秀案例

    • Excel导入完整案例
  • 信创专区

    • 海量数据库
    • 神通数据库
    • 达梦数据库
    • 麒麟v10安装插件
  • 框架升级

工具类

章节简介

本章节介绍系统中工具类使用准则,以及一些常用的工具类

不推荐自己写!

我们不应该去做重复造轮子的事情,甚至造出来的轮子是不如外面成熟的轮子的。所以推荐使用HuTool这个工具包。此工具包包含了大部分的工具类,并且经过了大量的测试。基本满足项目使用

HuTool

适用范围

文件操作、LocalDate处理、流操作、常用加密算法、反射操作、Http请求

HuTool具体包含功能请参阅官方文档:HuTool

POI-TL

适用范围

根据模板输出Word文档相关操作

POI-TL是POI的一个扩展,专门用于处理word 参考链接:https://deepoove.com/poi-tl/
示例代码:

template.docx文件中,占位符样式
{{title}}
//java数据对象,DTO或者VO一类,此处仅为示例
ModelData data = new ModelData();
data.setTitle("这里是标题");
XWPFTemplate template = XWPFTemplate.compile("template.docx").render(data);  
// 这里可以换成文件输出流等其他类型的输出流,或者传到OSS,把网址返回给前端
template.writeAndClose(new FileOutputStream("output.docx")); 

系统内置

提示

上面也说,尽量不自己造轮子,所以系统只保留了极少数的工具类,其中像StringUtil这种也是又大量现成的轮子可以使用,只是有一些历史包袱原因,迫不得已保留了下来。

  1. SystemUtil:此类封装了部分系统信息获取方法
/**
 * 获取当前请求Request对象
 * @return HttpServletRequest对象
 */
public static HttpServletRequest getRequest();

/**
 * 获取当前请求Response对象
 * @return HttpServletResponse对象
 */
public static HttpServletResponse getResponse();

/**
 * 获取当前请求Session对象
 * @return HttpSession对象
 */
public static HttpSession getSession();

/**
 * 直接往HttpResponse对象写入resource文件夹下的文件
 * 假设文件在resource/template/aaa.xlsx,通过此方法可以直接往输出流中写入文件内容,实现下载
 * 常用于下载excel模板等功能
 * @param filePath 文件路径,相对于resource文件夹的相对路径
 */
public static void downloadClassPathFile(String filePath);

/**
 * 上面方法的重载,可以指定文件的MIME类型,例如application/vnd.ms-excel等
 * @param filePath 文件路径,相对于resource文件夹的相对路径
 * @param contentType 文件的MIME类型,例如application/vnd.ms-excel等
 */
public static void downloadClassPathFile(String filePath, String contentType);

/**
 * 获取OS的临时目录
 * @return 临时目录的绝对路径
 */
public static String getTmpDir();
  1. SpringContextUtil:此类主要封装了Spring容器获取Bean的方法
/**
 * 获取Spring容器中的Bean
 * @param beanName beanName
 * @return Spring管理的Bean
 */
public static <T> T getBean(String beanName);

/**
 * 获取Spring容器中的Bean
 * @param requiredType 类.class对象
 * @return Spring管理的Bean
 */
public static <T> T getBean(Class<T> requiredType);
  1. StringUtil:常用字符串操作,比如判空,判不空,判相等
/**
 * 判断字符串是否为空
 * @param str str
 * @return true or false
 */
public static boolean isNotEmpty(Object str);

/**
 * 判断字符串是否为空
 * @param cs 字符串
 * @return true or false
 */
public static boolean isEmpty(CharSequence cs);

/**
 * 字符串两边包裹指定字符,例如wrapper("abc", "%"") => %abc%
 * @param str str
 * @param wrapper wrapper
 * @return String
 */
public static String wrapper(String str, String wrapper);

/**
 * 字符串拼接
 * @param ele ele 字符串数组,可以是单个元素或者多个元素
 * @return String 拼接后的字符串,默认使用空格作为分隔符
 */
public static String join(String... ele);

/**
 * 字符串拼接
 * @param list 集合
 * @return String 拼接后的字符串,默认使用空格作为分隔符
 */
public static String join(Collection<?> list);

/**
 * 字符串拼接
 * @param list 集合
 * @param separator 分隔符
 * @return String 拼接后的字符串
 */
public static String join(Collection<?> list, String separator);

/**
 * 字符串相等判断,如果两边都是null,也算作相等
 * @param cs1 字符串1
 * @param cs2 字符串2
 * @return true or false
 */
public static boolean equals(String cs1, String cs2);
  1. TreeBuilder:Java中从List构建一颗树的工具类,运用了Java8的Lambda表达式,传入getter/setter方法,构建父子关系
/**
 * 构建树结构
 *
 * @param dataList       数据列表
 * @param idGetter       获取 ID 的方法引用
 * @param parentIdGetter 获取父 ID 的方法引用
 * @param childrenSetter 设置子节点的方法引用
 * @param rootParentId   根节点的父 ID
 * @param isAbandon      如果某条数据找不到对应的parent,是否舍弃这条数据,默认为true
 * @return 构建完成的树
 */
public List<T> buildTree(List<T> dataList, Function<T, Object> idGetter,
                             Function<T, Object> parentIdGetter, Function<T, List<T>> childrenSetter,
                             Object rootParentId,boolean isAbandon);

/**
 上面方法的重载,默认了isAbandon为true,即如果某条数据找不到对应的parent,则舍弃这条数据
 */
public List<T> buildTree(List<T> dataList, Function<T, Object> idGetter,
                         Function<T, Object> parentIdGetter, Function<T, List<T>> childrenSetter,
                         Object rootParentId);

自建工具类

如果HuTool不能满足你的需求,你可以自建工具类。但是请注意以下几点:

  1. 请将工具类放在引用的模块包下,新建一个utils包,在里面新建工具类
  2. 请勿必进行单元测试,保证工具类的正确性
  3. 工具类尽量保障可以通过main方法启动,不要依赖于Spring容器
在 GitLab 上编辑此页
最后更新: 2025/11/4 16:53
贡献者: xuew
Prev
文件上传下载
Next
定时任务