Java开发基础工具包

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 包括Rest接口参数校验注解、参数校验工具类、时间工具类、id工具类、bean工具类。。。。

Java常用工具类整合

一、引入依赖

<dependency>
  <groupId>cn.gjing</groupId>
  <artifactId>tools-common</artifactId>
  <version>1.6.2</version>
</dependency>

二、允许跨域:

开启全局允许跨域, 在启动类或者任意类使用@EnableCors注解即可,会走默认配置,也可以自定义配置,配置示例如下:

  • yml方式
tools:
  common:
    cors:
      # 支持的方法类型
      allowed-methods: POST,GET,DELETE,PUT,OPTIONS
      # 支持的请求头
      allowed-headers:
      # 支持的域名
      allowed-origins:
      # 方法路径
      path: /**
      max-age: 1800
  • javaBean方式
/**
 * @author Gjing
 **/
@Configuration
public class CorsConfiguration {
    @Bean
    public CorsBean corsBean() {
        CorsBean corsBean = new CorsBean();
        corsBean.setAllowedMethods(new String[]{"POST"});
        return corsBean;
    }
}

三、结果bean:

1、ResultVO

通用返回结果模板

参数 描述
code 状态码
message 提示信息
data 数据

2、PageResult

分页查询返回结果集

参数 描述
totalPages 总页数
CurrentPage 当前页数
totalRows 总条数
pageRows 每页的条数
data 数据

3、ErrorResult

错误返回模板

参数 描述
code 状态码
message 提示信息

四、参数校验工具类:

主要提供参数校验、处理,匹配等等, 使用时通过ParamUtils.xxx()使用,以下为该工具的所有方法介绍 :

1、isEmpty

判断给定参数是否为空,可以是字符串、包装类型、数组、集合等

参数 描述
param 参数

2、isNotEmpty

判断给定是否不为空,可以是字符串、包装类型、数组、集合等

参数 描述
param 参数

3、requireNotNull

该参数不能为空,为空抛出NPE,否则返回原值

参数 描述
param 参数

4、ListHasEmpty

判断集合里是否含有空值

参数 描述
list 集合

5、multiEmpty

检查多个参数里面是否有空值

参数 描述
params 多个参数

6、equals

判断两个参数是否相等

参数 描述
param1 参数1
param2 参数2

7、trim

去除字符串的空格

参数 描述
str 字符串

8、trim

去除集合中的空元素

参数 描述
list 集合

9、removeSymbol

移除字符串两边的指定符号

参数 描述
str 字符串
symbol 符号

10、removeStartSymbol

移除字符串开始的指定符号

参数 描述
str 字符串
symbol 符号

11、removeEndSymbol

移除字符串末尾的指定符号

参数 描述
str 字符串
symbol 符号

12、split

根据符号截取

参数 描述
str 字符串
symbol 符号

13、removeAllSymbol

移除字符串里的所有指定符号

参数 描述
str 字符串
symbol 符号

14、contains

判断数组里是否包含指定的值

参数 描述
arr 数组
val

15、isEmail

判断是否为email

参数 描述
email 字符串

16、isMobileNumber

判断是否是手机号码

参数 描述
phone 字符串

17、isTelPhone

判断是不是电话号码

参数 描述
tel 字符串

18、isPostCode

判断是否为邮编

参数 描述
postCode 字符串

五、时间工具类:

对时间进行操作,使用时通过TimeUtils.xxx()调用,该工具的所有方法介绍如下 :

六、加密工具类

1、EncryptionUtils:

  • EncryptionUtils.encodeMd5():MD5加密
  • EncryptionUtils.encodeBase64():Base64加密
  • EncryptionUtils.decodeBase64():Base64解密

2、ShaUtils:

  • ShaUtils.encodeSha256Hmac():Sha356Hmac加密
  • ShaUtils.sha1Hmac():sha1Hmac加密

3、AesUtils:

  • AesUtils.encode():AES加密
  • AesUtils.decode():AES解密

七、随机数工具类

用于随机生成数字或字符串,使用时通过RandomUtils.xxx()调用,该工具包含的所有方法如下 :

  • RandomUtils.randomInt():获取随机整数,可设置最大值和最小值
  • RandomUtils.getRandom():获取一个Random实例
  • RandomUtils.generateMixString():生成混合指定长度字符串(数字、字母大小写)
  • RandomUtils.generateString():获取指定长度纯字符串(字母大小写)
  • RandomUtils.generateNumber():获取指定长度数字字符串

八、Bean工具类

使用时通过BeanUtils.xxx()调用

1、copyProperties

属性复制,用于将一个对象的属性赋值到另一个对象,两个对象间的参数名和数据类型必须相同
参数说明

参数 描述
source 源对象
target 目标对象
ignores 忽略的字段,设置后不会进行复制

2、toBean

将map转为bean对象
参数说明

参数 描述
map 需要转为Bean的map
beanClass 目标Bean的class

3、findMethod

查找类中的方法
参数说明

参数 描述
clazz 目标类class
methodName 方法名
paramTypes 方法参数类型

4、findDeclaredMethod

查找类中声明的方法
参数说明

参数 描述
clazz 目标类class
methodName 方法名
paramTypes 方法参数类型

5、setFieldValue

给类中的某个字段设置值
参数说明

参数 描述
o 字段所在的对象
field 字段
value

6、getFieldValue

获取某个字段的值
参数说明

参数 描述
o 字段所在的对象
field 字段

7、toMap

将bean对象转为map
参数说明

参数 描述
bean 需要转为map的bean对象

8、getInterfaceType

获取泛型接口中某个泛型的真实对象class
参数说明

参数 描述
source 实现泛型接口的类
typeInterface 泛型接口
paramIndex 泛型参数下标,0开始

9、getGenericType

获取某个泛型字段的真实对象class
参数说明

参数 描述
type 字段的泛型类型
paramIndex 泛型参数下标,0开始

九、唯一ID生成工具类

**项目中使用可以将IdUtils注册为一个bean以在其他地方进行依赖注入, 或者将其设置为静态的, 不要出现重复的IdUtils对象, 否则并发情况下会出现重复,
如果要调用snowId, 必须通过带参数的构造方法进行创建实例**

1、uuid

获取去除-符号的uuid

public class Test{
    public static void main(String[] args){
      IdUtils idUtils = new IdUtils();
      System.out.println(idUtils.uuid());
    }
}

2、snowId

得到一个唯一的ID,在多服务需要操作同一个数据表的情况下, 需要保证每个服务的centerIdmachineId唯一

public class Test{
    public static void main(String[] args){
      IdUtils idUtils = new IdUtils(1,2);
      for(int i = 0; i < 100; i++) {
        System.out.println(idUtils.snowId());
      }
    }
}

十、邮件工具类

用于发送邮件,支持普通邮件和带附件邮件,支持html格式文本,支持群发和抄送,返回true为发送成功,使用时通过EmailUtils.of()生成实例之后在进行其中的方法,of()方法参数如下 :

参数 描述
host smtp服务器地址,比如qq邮箱:smtp.qq.com
password 发送者邮箱密码,有些邮箱需要用授权码代替密码
from 发送人邮箱

该工具包含的所有方法如下 :

1、sendEmail

发送邮件,参数如下:

参数 描述
subject 主题
body 邮件内容,支持HTML
files 要发送的附件物理地址,不要可以传null或者空数组
tos 收件人邮箱账号,多个使用逗号隔开
copyTo 抄送人地址,多个用逗号隔开,不抄送可以传null或者空字符串

完整示例如下 :

public class Test{
    public static void main(String[] args) {
        boolean b = EmailUtil.of("smtp.qq.com", "发送人密码或者授权码", "发送人邮箱")
                .sendEmail("主题", "内容",new String[]{"附件物理地址"},"收件人邮箱地址", "抄送人邮箱地址");
        if (b) {
            System.out.println("发送成功");
        }
    }
}

十一、二维码工具类

二维码工具类, 包含的所有方法如下 :

1、create()

根据文本内容,自定义宽度高度,自定义图片格式,自定义配置信息,生成所需要的二维码图片,所有参数如下

参数 描述
text 文本内容
filePath 生成图片路径
width
height
format 图片格式 ,png,img
hintTypes 自定义配置信息

2、createWithLogo()

自定义生成带logo的二维码图片,所有参数如下:

参数 描述
text 文本内容
filePath 生成图片路径
logoPath logo文件路径
qrCodeWidth 二维码宽度
qrCodeHeight 二维码高度
logoWidth logo宽度
logoHeight logo高度
format 图片格式

3、read(String filePath)

解析二维码,获取其中文本信息

参数说明

参数 描述
filePath 图片路径

4、read(InputStream inputStream)

解析二维码,获取其中的文本信息

参数说明

参数 描述
inputStream 输入流

5、read(String filePath, Map decodeHints)

自定义配置解析二维码,获取其中的文本信息

参数说明

参数 描述
filePath 图片路径
decodeHints 解析配置信息

6、read(InputStream inputStream, Map decodeHints)

自定义配置解析二维码,获取其中的文本信息

参数说明

参数 描述
inputStream 输入流
decodeHints 解析配置信息

十二、验证码工具类

用于生成英文和数字混合的验证码,使用时通过构造AuthCodeUtils在进行调用其中的方法,构造时参数如下 :

参数 描述
width 验证码图片宽度
height 验证码图片高度
codeCount 验证码字符个数
lineCount 验证码干扰线数

该工具下的所有方法如下:

1、writeToLocal

生成验证码到本地,案例如下

public class Test{
    public static void main(String[] args) {
        AuthCodeUtil authCodeUtil = new AuthCodeUtil(160,40,5,150);
        try {
            String path="/文件夹路径/code.png";
            //写入到本地时可以通过getCode()方法获取生成的验证码
            String code = authCodeUtil.writeToLocal(path).getCode();
            System.out.println(code);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、getCode

获取生成的验证码字符

public class Test{
    public static void main(String[] args){
      String code = authCodeUtil.writeToLocal(xxx).getCode;
      System.out.println(code);
    }
}

3、write

以流的方式返回给前端,案例如下

public class Test{
    @GetMapping("/code")
    public void getCode(HttpServletResponse response, HttpServletRequest request) throws IOException {
        AuthCodeUtil authCodeUtil = new AuthCodeUtil(100, 50, 4, 50);
        response.setContentType("image/jpeg");
        //禁止图像缓存
        response.setHeader("param", "no-cache");
        response.setDateHeader("Expires", 0);
        authCodeUtil.write(response.getOutputStream());
    }
}

十三、Spring Bean工具类

获取Spring Bean和ApplicationContext

1、获取Bean

public class Test{
    @GetMapping("/test")
    public void test(){
        //通过class获取
        Test test = SpringBeanUtils.getBean(Test.class);
        //通过bean name获取
        Object o = SpringBeanUtils.getBean("test");
    }
}

2、获取ApplicationContext

public class Test{
    private ApplicationContext applicationContext;
    
    public Test(){
        this.applicationContext = SpringBeanUtils.getApplicationContext();
    }
}

工具源码地址:tools-common

目录
相关文章
|
29天前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
98 10
|
27天前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
17天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
36 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
4天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
40 13
|
9天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
42 10
|
2天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
37 2
|
12天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
28天前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
39 2
|
29天前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
28天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
61 1