<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          不要再封裝各種 Util 工具類了,這個(gè)開源項(xiàng)目,真的太好用了!

          共 4427字,需瀏覽 9分鐘

           ·

          2021-12-25 03:25

          今天給大家推薦一個(gè)非常好用的Java工具類庫,企業(yè)級常用工具類,基本都有,能避免重復(fù)造輪子及節(jié)省大量的開發(fā)時(shí)間,非常不錯,值得大家去了解使用。

          Hutool諧音 “糊涂”,寓意追求 “萬事都作糊涂觀,無所謂失,無所謂得” 的境界。

          Hutool 是一個(gè) Java 工具包,也只是一個(gè)工具包,它幫助我們簡化每一行代碼,減少每一個(gè)方法,讓 Java 語言也可以 “甜甜的”。Hutool 最初是我項(xiàng)目中 “util” 包的一個(gè)整理,后來慢慢積累并加入更多非業(yè)務(wù)相關(guān)功能,并廣泛學(xué)習(xí)其它開源項(xiàng)目精髓,經(jīng)過自己整理修改,最終形成豐富的開源工具集。

          一、功能

          一個(gè) Java 基礎(chǔ)工具類,對文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML 等 JDK 方法進(jìn)行封裝,組成各種 Util 工具類,同時(shí)提供以下組件:

          • hutool-aop JDK 動態(tài)代理封裝,提供非 IOC 下的切面支持
          • hutool-bloomFilter 布隆過濾,提供一些 Hash 算法的布隆過濾
          • hutool-cache 緩存
          • hutool-core 核心,包括 Bean 操作、日期、各種 Util 等
          • hutool-cron 定時(shí)任務(wù)模塊,提供類 Crontab 表達(dá)式的定時(shí)任務(wù)
          • hutool-crypto 加密解密模塊
          • hutool-db JDBC 封裝后的數(shù)據(jù)操作,基于 ActiveRecord 思想
          • hutool-dfa 基于 DFA 模型的多關(guān)鍵字查找
          • hutool-extra 擴(kuò)展模塊,對第三方封裝(模板引擎、郵件等)
          • hutool-http 基于 HttpUrlConnection 的 Http 客戶端封裝
          • hutool-log 自動識別日志實(shí)現(xiàn)的日志門面
          • hutool-script 腳本執(zhí)行封裝,例如 Javascript
          • hutool-setting 功能更強(qiáng)大的 Setting 配置文件和 Properties 封裝
          • hutool-system 系統(tǒng)參數(shù)調(diào)用封裝(JVM 信息等)
          • hutool-json JSON 實(shí)現(xiàn)
          • hutool-captcha 圖片驗(yàn)證碼實(shí)現(xiàn)

          二、安裝

          maven項(xiàng)目在pom.xml添加以下依賴即可:

          <dependency>
          ????<groupId>cn.hutoolgroupId>
          ????<artifactId>hutool-allartifactId>
          ????<version>4.6.3version>
          dependency>

          三、簡單測試

          DateUtil

          日期時(shí)間工具類,定義了一些常用的日期時(shí)間操作方法。

          //Date、long、Calendar之間的相互轉(zhuǎn)換
          //當(dāng)前時(shí)間
          Date?date?=?DateUtil.date();
          //Calendar轉(zhuǎn)Date
          date?=?DateUtil.date(Calendar.getInstance());
          //時(shí)間戳轉(zhuǎn)Date
          date?=?DateUtil.date(System.currentTimeMillis());
          //自動識別格式轉(zhuǎn)換
          String?dateStr?=?"2017-03-01";
          date?=?DateUtil.parse(dateStr);
          //自定義格式化轉(zhuǎn)換
          date?=?DateUtil.parse(dateStr,?"yyyy-MM-dd");
          //格式化輸出日期
          String?format?=?DateUtil.format(date,?"yyyy-MM-dd");
          //獲得年的部分
          int?year?=?DateUtil.year(date);
          //獲得月份,從0開始計(jì)數(shù)
          int?month?=?DateUtil.month(date);
          //獲取某天的開始、結(jié)束時(shí)間
          Date?beginOfDay?=?DateUtil.beginOfDay(date);
          Date?endOfDay?=?DateUtil.endOfDay(date);
          //計(jì)算偏移后的日期時(shí)間
          Date?newDate?=?DateUtil.offset(date,?DateField.DAY_OF_MONTH,?2);
          //計(jì)算日期時(shí)間之間的偏移量
          long?betweenDay?=?DateUtil.between(date,?newDate,?DateUnit.DAY);

          StrUtil

          字符串工具類,定義了一些常用的字符串操作方法。

          //判斷是否為空字符串
          String?str?=?"test";
          StrUtil.isEmpty(str);
          StrUtil.isNotEmpty(str);
          //去除字符串的前后綴
          StrUtil.removeSuffix("a.jpg",?".jpg");
          StrUtil.removePrefix("a.jpg",?"a.");
          //格式化字符串
          String?template?=?"這只是個(gè)占位符:{}";
          String?str2?=?StrUtil.format(template,?"我是占位符");
          LOGGER.info("/strUtil?format:{}",?str2);

          NumberUtil

          數(shù)字處理工具類,可用于各種類型數(shù)字的加減乘除操作及判斷類型。

          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);
          //保留兩位小數(shù)
          BigDecimal?roundNum?=?NumberUtil.round(n1,?2);
          String?n3?=?"1.234";
          //判斷是否為數(shù)字、整數(shù)、浮點(diǎn)數(shù)
          NumberUtil.isNumber(n3);
          NumberUtil.isInteger(n3);
          NumberUtil.isDouble(n3);
          BeanUtil
          JavaBean的工具類,可用于Map與JavaBean對象的互相轉(zhuǎn)換以及對象屬性的拷貝。

          PmsBrand?brand?=?new?PmsBrand();
          brand.setId(1L);
          brand.setName("小米");
          brand.setShowStatus(0);
          //Bean轉(zhuǎn)Map
          Map?map?=?BeanUtil.beanToMap(brand);
          LOGGER.info("beanUtil?bean?to?map:{}",?map);
          //Map轉(zhuǎn)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);

          MapUtil

          Map操作工具類,可用于創(chuàng)建Map對象及判斷Map是否為空。

          //將多個(gè)鍵值對加入到Map中
          Map?map?=?MapUtil.of(new?String[][]{
          ????{"key1",?"value1"},
          ????{"key2",?"value2"},
          ????{"key3",?"value3"}
          });
          //判斷Map是否為空
          MapUtil.isEmpty(map);
          MapUtil.isNotEmpty(map);
          AnnotationUtil
          注解工具類,可用于獲取注解與注解中指定的值。

          //獲取指定類、方法、字段、構(gòu)造器上的注解列表
          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);

          SecureUtil

          加密解密工具類,可用于MD5加密。

          //MD5加密
          String?str?=?"123456";
          String?md5Str?=?SecureUtil.md5(str);
          LOGGER.info("secureUtil?md5:{}",?md5Str);

          CaptchaUtil驗(yàn)證碼工具類,可用于生成圖形驗(yàn)證碼。

          //生成驗(yàn)證碼圖片
          LineCaptcha?lineCaptcha?=?CaptchaUtil.createLineCaptcha(200,?100);
          try?{
          ????request.getSession().setAttribute("CAPTCHA_KEY",?lineCaptcha.getCode());
          ????response.setContentType("image/png");//告訴瀏覽器輸出內(nèi)容為圖片
          ????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中的工具類很多,可以參考官網(wǎng):https://www.hutool.cn/

          當(dāng)然,還有很多其他非常方便的方法,留著你自己去測試吧!使用Hutool工具,可以大大提高你的開發(fā)效率!

          瀏覽 58
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码性爱视频在线观看 | 不用播放器av | 男生女生操逼国产激情AV国产 | 果冻传媒性爱操逼电影三级片 | TWA0004 |