网站建设培训龙岗,同城可以做别人一样的门户网站吗,广州外贸公司网站建设,哪学网页设计目录
一、简介
1、介绍
2、Hutool名称的由来
3、Hutool如何改变我们的coding方式
4、包含组件#xff08;核心#xff09;
5、官方文档
二、安装与使用
1、引入
import方式
exclude方式
2、安装(POM)
三、使用
1、DateUtil
2、StrUtil
3、NumberUtil
4、MapU…
目录
一、简介
1、介绍
2、Hutool名称的由来
3、Hutool如何改变我们的coding方式
4、包含组件核心
5、官方文档
二、安装与使用
1、引入
import方式
exclude方式
2、安装(POM)
三、使用
1、DateUtil
2、StrUtil
3、NumberUtil
4、MapUtil
5、SecureUtil
6、CaptchaUtil 一、简介
1、介绍
Hutool是一个小而全的Java工具类库通过静态方法封装降低相关API的学习成本提高工作效率使Java拥有函数式语言般的优雅让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢它涵盖了Java开发底层代码中的方方面面它既是大型项目开发中解决小问题的利器也是小型项目中的效率担当
Hutool是项目中“util”包友好的替代它节省了开发人员对项目中公用类和公用工具方法的封装时间使开发专注于业务同时可以最大限度的避免封装不完善带来的bug。
2、Hutool名称的由来
Hutool Hu tool是原公司项目底层代码剥离后的开源库“Hu”是公司名称的表示tool表示工具。Hutool谐音“糊涂”一方面简洁易懂一方面寓意“难得糊涂”。
3、Hutool如何改变我们的coding方式
Hutool的目标是使用一个工具方法代替一段复杂代码从而最大限度的避免“复制粘贴”代码的问题彻底改变我们写代码的方式。
以计算MD5为例
【以前】打开搜索引擎 - 搜“Java MD5加密” - 打开某篇博客- 复制粘贴 - 改改好用【现在】引入Hutool - SecureUtil.md5()
Hutool的存在就是为了减少代码搜索成本避免网络上参差不齐的代码出现导致的bug。
4、包含组件核心
一个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脚本执行封装例如Javascripthutool-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)封装实现
5、官方文档
官网Hutool — A set of tools that keep Java sweet.
参考文档简介 | Hutool
API文档Document 二、安装与使用
1、引入
Hutool-all是一个Hutool的集成打包产品由于考虑到“懒人”用户及分不清各个模块作用的用户“无脑”引入hutool-all模块是快速开始和深入应用的最佳方式。
起初Hutool只提供了两种引入方式 引入hutool-all以便使用所有工具类功能 引入hutool-xxx单独模块使用
后来t-io的作者谭总提出是否可以引入一个bom包一次性引入所有子模块然后将不用的模块排除掉。起初我是排斥的认为这种方式用处不大其实是我不会写……
再后来接触了Maven的这部分于是有了hutool-bom模块
当然这个模块的存在一直有争议因为真正的bom包是一个模块管理包正确的打开方式是可以引入再引入需要的模块只是不用重复版本号而已Hutool中排除方式就变得非常异类真是让人头大。
整个bom模块只由一个pom.xml组成同时提供了dependencyManagement和dependencies两种声明。于是我们就可以针对不同需要完成引入。
import方式
如果你想像Spring-Boot一样引入Hutool再由子模块决定用到哪些模块你可以在父模块中加入 dependencyManagement dependencies dependency groupIdcn.hutool/groupId artifactIdhutool-bom/artifactId version${hutool.version}/version typepom/type !-- 注意这里是import -- scopeimport/scope /dependency /dependencies /dependencyManagement 在子模块中就可以引入自己需要的模块了 dependencies dependency groupIdcn.hutool/groupId artifactIdhutool-http/artifactId /dependency /dependencies PS使用import的方式只会引入hutool-bom内的dependencyManagement的配置其它配置在这个引用方式下完全不起作用。
exclude方式
如果你引入的模块比较多但是某几个模块没用你可以 dependencies dependency groupIdcn.hutool/groupId artifactIdhutool-bom/artifactId version${hutool.version}/version !-- 加不加这句都能跑区别只有是否告警 -- typepom/type exclusions exclusion groupIdcn.hutool/groupId artifactIdhutool-system/artifactId /exclusion /exclusions /dependency /dependencies PS这个配置会传递依赖hutool-bom内所有dependencies的内容当前hutool-bom内的dependencies全部设置了version就意味着在maven resolve的时候hutool-bom内就算存在dependencyManagement也不会产生任何作用。
2、安装(POM)
dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.16/version
/dependency三、使用
1、DateUtil
日期时间工具类定义了一些常用的日期时间操作方法。
//Date、long、Calendar之间的相互转换
//当前时间
Date date DateUtil.date();
//Calendar转Date
date DateUtil.date(Calendar.getInstance());
//时间戳转Date
date DateUtil.date(System.currentTimeMillis());
//自动识别格式转换
String dateStr 2017-03-01;
date DateUtil.parse(dateStr);
//自定义格式化转换
date DateUtil.parse(dateStr, yyyy-MM-dd);
//格式化输出日期
String format DateUtil.format(date, yyyy-MM-dd);
//获得年的部分
int year DateUtil.year(date);
//获得月份从0开始计数
int month DateUtil.month(date);
//获取某天的开始、结束时间
Date beginOfDay DateUtil.beginOfDay(date);
Date endOfDay DateUtil.endOfDay(date);
//计算偏移后的日期时间
Date newDate DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
//计算日期时间之间的偏移量
long betweenDay DateUtil.between(date, newDate, DateUnit.DAY);2、StrUtil
字符串工具类定义了一些常用的字符串操作方法。
//判断是否为空字符串
String str test;
StrUtil.isEmpty(str);
StrUtil.isNotEmpty(str);
//去除字符串的前后缀
StrUtil.removeSuffix(a.jpg, .jpg);
StrUtil.removePrefix(a.jpg, a.);
//格式化字符串
String template 这只是个占位符:{};
String str2 StrUtil.format(template, 我是占位符);
LOGGER.info(/strUtil format:{}, str2);
3、NumberUtil
数字处理工具类可用于各种类型数字的加减乘除操作及判断类型。
double n1 1.234;
double n2 1.234;
double result;
//对float、double、BigDecimal做加减乘除操作
result NumberUtil.add(n1, n2);
result NumberUtil.sub(n1, n2);
result NumberUtil.mul(n1, n2);
result NumberUtil.div(n1, n2);
//保留两位小数
BigDecimal roundNum NumberUtil.round(n1, 2);
String n3 1.234;
//判断是否为数字、整数、浮点数
NumberUtil.isNumber(n3);
NumberUtil.isInteger(n3);
NumberUtil.isDouble(n3);
BeanUtil
JavaBean的工具类可用于Map与JavaBean对象的互相转换以及对象属性的拷贝。PmsBrand brand new PmsBrand();
brand.setId(1L);
brand.setName(小米);
brand.setShowStatus(0);
//Bean转Map
MapString, Object map BeanUtil.beanToMap(brand);
LOGGER.info(beanUtil bean to map:{}, map);
//Map转Bean
PmsBrand mapBrand BeanUtil.mapToBean(map, PmsBrand.class, false);
LOGGER.info(beanUtil map to bean:{}, mapBrand);
//Bean属性拷贝
PmsBrand copyBrand new PmsBrand();
BeanUtil.copyProperties(brand, copyBrand);
LOGGER.info(beanUtil copy properties:{}, copyBrand);
4、MapUtil
Map操作工具类可用于创建Map对象及判断Map是否为空。
//将多个键值对加入到Map中
MapObject, Object map MapUtil.of(new String[][]{{key1, value1},{key2, value2},{key3, value3}
});
//判断Map是否为空
MapUtil.isEmpty(map);
MapUtil.isNotEmpty(map);
AnnotationUtil
注解工具类可用于获取注解与注解中指定的值。//获取指定类、方法、字段、构造器上的注解列表
Annotation[] annotationList AnnotationUtil.getAnnotations(HutoolController.class, false);
LOGGER.info(annotationUtil annotations:{}, annotationList);
//获取指定类型注解
Api api AnnotationUtil.getAnnotation(HutoolController.class, Api.class);
LOGGER.info(annotationUtil api value:{}, api.description());
//获取指定类型注解的值
Object annotationValue AnnotationUtil.getAnnotationValue(HutoolController.class, RequestMapping.class);
5、SecureUtil
加密解密工具类可用于MD5加密。
//MD5加密
String str 123456;
String md5Str SecureUtil.md5(str);
LOGGER.info(secureUtil md5:{}, md5Str);
6、CaptchaUtil
验证码工具类可用于生成图形验证码。
//生成验证码图片
LineCaptcha lineCaptcha CaptchaUtil.createLineCaptcha(200, 100);
try {request.getSession().setAttribute(CAPTCHA_KEY, lineCaptcha.getCode());response.setContentType(image/png);//告诉浏览器输出内容为图片response.setHeader(Pragma, No-cache);//禁止浏览器缓存response.setHeader(Cache-Control, no-cache);response.setDateHeader(Expire, 0);lineCaptcha.write(response.getOutputStream());
} catch (IOException e) {e.printStackTrace();
}
当然Hutool的工具类中还有很多其他非常方便的方法留着你自己去测试吧使用Hutool工具可以大大提高你的开发效率
如果这篇文章对您有所帮助或者有所启发的话求一键三连点赞、评论、收藏➕关注您的支持是我坚持写作最大的动力。