标签: hutool编程工具
hutool是为了方便java工程师快速的管理自己的代码,简化自己代码方法而开发的工具包,这个工具包虽然体积不是很大,但是拥有非常强大的功能,而且还能整合在自己的项目之中,形成自己独特的工具库,感兴趣的用户快来绿色资源网下载吧!
Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。
hutool-aop jdk动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache 缓存
hutool-dfa 基于DFA模型的多关键字查找
hutool-extra 扩展模块,对第三方封装(模板引擎、邮件等)
hutool-http 基于HttpUrlConnection的Http客户端封装
hutool-log 自动识别日志实现的日志门面
hutool-script 脚本执行封装,例如javascript
hutool-setting 功能更强大的Setting配置文件和Properties封装
hutool-system 系统参数调用封装(JVM信息等)
hutool-json JSON实现
hutool-captcha 图片验证码实现
hutool-poi 针对POI中excel的封装
hutool-core 核心,包括Bean操作、日期、各种Util等
hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto 加密解密模块
hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
1. 便捷性与灵活性并存
所谓便捷性,就是我们在调用一个方法的时候参数要尽量少,只传必要参数即可,非必要参数使用默认值即可(想想一个方法一堆参数的时候,调用者晕头转向不知所云)。
所谓灵活性正好与便捷性相反,要让一个方法的参数尽量多,为用户灵活的操作方法提供最大可能性。
这两个原则看似矛盾,其实只是针对不同场景设定的而已,缺一不可。便捷性强调拿来即用,为快速开发提供可能;灵活性强调最大限度调优,为性能调优和扩展提供便利。
这一原则在针对编码问题上体现尤为突出,我们的大部分方法都是默认“UTF-8”编码的,这也是我们推荐的编码方式,推荐大部分项目使用的编码。但是一旦有遗留项目使用了类似“GBK”等编码,没关系,我们提供在相关方法中提供Charset对象参数,可以自定义编码。这样使用这一原则就兼顾了各种项目的情况。
2. 适配与兼容
在Hutool中,适配器模式运用特别广泛,log模块适配主流各大框架,db模块适配主流各种连接池和关系数据库。这种适配一是提高灵活性,二是可以很好的兼容各大框架,让Hutool可以在各种复杂项目环境中生存的很好。
适配兼容产生的另一个原则是:你有我配,你无我有。说白了就是:如果你项目中有这个框架,我可以完美适配,如果你没有引入任何框架,Hutool自身实现了一些逻辑可以很好的工作。
3. 可选依赖原则
在Java项目中依赖常常是个头疼的问题,不同的框架强依赖另一些框架或包,虽然Maven可以很好的处理冲突问题,但是项目底下满满的依赖jar包,是不是无形中拖慢了项目,也增加了复杂性和不确定性?而很多时候,我们是不是只是为了用一个小小的方法,就要引入一个第三方包,谁喜欢这样臃肿的项目?
Hutool中也会有一些依赖,但是全部都是optional的,在使用中不会关联依赖,而这些依赖只有在使用者使用到时才会调用,这时可能会报ClassNotFoundException,不用担心,我们自己引入即可。为什么要这样做呢?以VelocityUtil这个工具类为例,使用Velocity的人占比极少,我们不能为了这些用户而强引入Velocity包,而使用这个工具类的人应该明白,我们应该自己引入这个包。
而更多时候,我们需要用到某个方法时,我的做法是将方法拷贝到项目中(Hutool中的方法正在不断积累),类似于Apache Commons中的方法,Hutool中基本都有取代方法,完全不必要引入。
可选依赖原则让我们的项目更加精简,问题也更容易排查。
4. 无侵入原则
Hutool始终是一个工具类而不是框架,这意味着它对项目的侵入几乎为零,每个方法都是可被代替的,甚至整个Hutool也是可被替换的。这种无侵入性,让使用者可以更加放心的在项目中引入,也保证了与其它框架完美的兼容。
5. 方法优先于对象
在工具类中,往往以静态方法为主。方法集中在一个类中,配合IDE查找使用起来是十分便利的。于是Hutool将JDK中许多的类总结抽象为一个方法,这一原则使用最多的就是流的相关方法,这些方法很好的隐藏了XXXInputStream、XXXReader等的复杂性。
6. 自动识别优于用户定义
其实很多时候,有些参数、设置等是没有必要我们自己传入的,完全可以靠逻辑判断自动完成。一个方法很多时候明明只需要传3个参数,我们非要传4个,这多出的一个参数本身就是代码的一种冗余。
这一原则在Hutool的各个角落都有所体现,尤为明显的比如log模块。构建日志对象的时候,很明显类名可以动态获取,何必让使用者再传入呢?再比如在db模块的数据库配置中,数据库驱动命名完全可以根据连接字符串判断出来,何必要让用户传入?这些问题的在Hutool中都有非常好的封装,而这一原则也渐渐变成Hutool哲学的一部分。
加载全部内容
TGraphDisplay3D(图形编程软件)v1.0.59.202 官方版23.2M13人在玩TGraphDisplay3D是一个Delphi的组件,支持图形编程功能,使用纯Direct3D113D加速图形,支持音频样本显示,用户可以任意添加带有名称和自定义颜色的标记,有需要的用户不要错过了,欢迎下载使用!
下载Notepad2书签版(Notepad2 Bookmark Edition)v5.1 官方版322KB12人在玩Notepad2BookmarkEdition是一款非常好用的记事本替代文本编辑器,Notepad2是一个重量轻,自由和开放源码的记事本类似的语法突出显示的文本编辑器。
下载Mongood(MongoDB管理工具)v0.6.2 免费版9.2M9人在玩Mongood是一款功能强大的MongoDB管理工具,能够为用户提供强大的图形管理界面,能够在查询文件时自动生成索引,持完整的Mongo-shell数据类型和查询语法,能够提高你的数据库管理效率,有需要的用户欢迎下载使用!
下载PopSQLv1.0 官方版71.2M8人在玩PopSQL是一款非常好用的SQL编辑器,软件界面简洁,功能强大,支持多种语言输入,兼容多种SQL软件,如果你还在寻找sql编辑器,不妨试试PopSQL吧!
下载Sencha Architect 3注册版240.7M8人在玩SenchaArchitect3注册版是一款是HTML5可视化应用开发程序,开发团队可以在一个单一集成的环境中完成应用的设计、开发和部署,能够有效提高工作效率,有需要的用户不要错过了,欢迎下载使用!
下载Claris FileMaker Pro(低代码开发工具)v19.3.1.43 免费版289.9M6人在玩ClarisFileMakerPro低代码开发工具是一款非常好用的代码开发工具,它的页面简洁,功能强大,无需知道种种编程技术,开发者使用ClarisFileMakerPro也能提高工作效率,感兴趣的朋友快来下载体验吧。
下载SRPG Studio(RPG游戏制作引擎)v1.149 免费版191.5M5人在玩SRPGStudio是一款非常不错的RPG游戏制作工具,支持对事件、战斗、装备、地图等内容的自由度设置,能够为你的游戏添加各种BGM,将你喜欢的角色形象、剧本制作成游戏,感兴趣的用户欢迎下载使用!
下载sublime text3中文破解版(代码编辑器)45.6M4人在玩sublimetext3中文破解版是一款十分受用户推崇的代码编辑器,它的功能全面强大,拥有高效、没有干扰的界面以及非凡的代码编辑能力,支持语法高亮、代码补全、代码片段、代码折叠、行号显示、自定义皮肤、配色方案等强大功能,欢迎大家下载体验。
下载Database Comparev2018 官方版9.1M2人在玩DatabaseCompare是常用的比较两个数据库之间差异的工具,主要就帮助大家比较数据库中的对象,比如说存储过程啊、数据啊、表单什么的、数据库中的数据,表的结构。DatabaseCompare支持比较真实数据库和数据库快照、备份、版本控制器或文件夹中的构建脚本。
下载Greenfootv2018 中文版186M2人在玩Greenfoot是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。它还可以被用来作为Java语言的教程,以及设计网络游戏,可以实用于所有年龄段的用户,而不仅仅是初学者。
下载