天天看点

Java 好用的开发工具包 Hutool

Java 好用的开发工具包 Hutool

官网:https://www.hutool.cn/

官方文档:https://www.hutool.cn/docs/#/

官方API文档:https://www.hutool.cn/docs/#/

GitHub:https://github.com/dromara/hutool/

目录

    • 1.简介
    • 2.Maven坐标
    • 3.常用功能
      • 1)发送请求
      • 2)深度克隆
      • 3)资源操作
      • 4)IO流工具
      • 5)反射工具
      • 6)ID工具
      • 7)命令行工具
      • 8)身份证工具
      • 9)单例工具
      • 10)高并发测试工具
      • 11)定时过期缓存工具
      • 12)MD5加密
      • 13)邮件工具
      • 14)二维码工具

1.简介

  • Hutool是Hu + tool的自造词,谐音“糊涂”。
  • Hutool是一个Java工具包,帮助我们简化每一行代码。
  • Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。

2.Maven坐标

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.3</version>
</dependency>
           

下面推荐几个我认为比较好用的用法:

3.常用功能

1)发送请求

HttpUtil发送请求

//GET请求
String content = HttpUtil.get(url);

//POST请求
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");

String result1 = HttpUtil.post(url, paramMap);
           

HttpRequest发送请求

@Test
public void test1() {

    //1. 组建请求json参数
    JSONObject json = new JSONObject();
    json.set("type", 1);
    String[] childrenId = new String[] {"132"};
    json.set("childrenIds", childrenId);

    String url=" http://localhost:8081/test";
    /*2. 发送post请求并接收响应数据
        采用的是一种叫链式编程的方式):
        header对应的是请求头。
        body对应的是请求体(包含参数和参数值)。
        HttpRequest里面包含Post、GET、Delete、Put等常用的RestFul方式。*/
    String post = HttpRequest.post(url)
        .header("key","2e351b12c5030")
        .header("sign","ee29e949d8c480a67e61e7921ac2dce7")
        .body(json.toString())
        .execute().body();
    System.out.println(post);
}
           

执行结果:

Java 好用的开发工具包 Hutool

2)深度克隆

// 深度克隆
ObjectUtil.cloneByStream(obj);
           

3)资源操作

// 读取`src/resources/config/test.xml` 文件内容(流读取,打成jar包仍然可用)
InputStream in = ResourceUtil.getStream("config/test.xml");
           

4)IO流工具

// 根据流读取文件内容
String content = IoUtil.read(in, "GBK");
           

5)反射工具

// 获取某个类的所有方法
Method[] methods = ReflectUtil.getMethods(ExamInfoDict.class);
// 获取某个类的指定方法
Method method = ReflectUtil.getMethod(ExamInfoDict.class, "getId");
// 构造对象
ReflectUtil.newInstance(ExamInfoDict.class);
// 执行方法
ReflectUtil.invoke(testClass, "setA", 10);
           

6)ID工具

// 生成随机的不带-的UUID
String uuid = IdUtil.simpleUUID();

// 雪花算法
// 终端ID, 数据中心ID
Snowflake snowflake = IdUtil.getSnowflake(1, 1);
long id = snowflake.nextId();
           

7)命令行工具

// 调用控制台,执行命令行
String str = RuntimeUtil.execForStr("ipconfig");
           

8)身份证工具

// 验证身份证是否有效
boolean isValid = IdcardUtil.isValidCard("321083197812162119");
           

9)单例工具

// 每次取出的均为同一单例
Dog dog = Singleton.get(Dog.class);
           

10)高并发测试工具

@Test
void test() {
    AtomicInteger integer = new AtomicInteger();
    ConcurrencyTester tester = ThreadUtil.concurrencyTest(100, () -> {
        // 测试的逻辑内容,例如:并发请求
        JSONObject json = new JSONObject();
        json.set("id", "2");
        String url="http://localhost:8081/module/detail";
        HttpRequest.post(url).body(json.toString()).execute();

        Console.log("{} request finished, index: {}", Thread.currentThread().getName(), integer.incrementAndGet());
    });

    // 获取总的执行时间,单位毫秒
    Console.log("总执行次数: {}, 耗时: {}", integer.get(), tester.getInterval() + "ms");
}
           

注意:这个工具只能在@Test单元测试中执行,在main方法中会导致线程挂起等待。

11)定时过期缓存工具

//创建缓存,默认4毫秒过期
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(4);
// 默认5秒过期
TimedCache<String, String> timedCache2 = CacheUtil.newTimedCache(DateUnit.SECOND.getMillis() * 5);
// 存
timedCache.put("key1", "value1", 1);//1毫秒过期
timedCache.put("key3", "value3");//默认过期(4毫秒)
// 取
String value1 = timedCache.get("key1");
String value2 = timedCache.get("key1", false); // 不刷新过期时间
           

注意:访问会刷新时间,如果不想刷新时间,调用get(Object, false)。

12)MD5加密

// MD5加密
String s = SecureUtil.md5("123");
           

13)邮件工具

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>
           

src/resources

目录下创建 mail.setting 文件:

# 发件人(必须正确,否则发送失败)
from = [email protected]
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = q1w2e3
           
// 发送邮件
MailUtil.send("[email protected]", "测试", "邮件来自Hutool测试", false);
// 带附件
MailUtil.send("[email protected]", "测试", "邮件来自Hutool测试", false, new File(""));
           

14)二维码工具

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>
           
// 生成指定url对应的二维码到文件,宽和高都是300像素
QrCodeUtil.generate("https://acgkaka.github.io/", 300, 300, FileUtil.file("d:/qrcode.jpg"));
           

二维码成果:

Java 好用的开发工具包 Hutool

就整理这么多,更多工具参考官方文档:https://www.hutool.cn/docs/#/

谢谢观看,完结撒花~

继续阅读