開(kāi)發(fā)常用工具類(lèi)總結(jié) Day20 2018-12-10

http://www.itdecent.cn/p/e02aaf59a0f1

概述

開(kāi)發(fā)常用工具類(lèi)總結(jié)

導(dǎo)入項(xiàng)目

<dependency>
      <groupId>io.github.ljwlgl</groupId>
      <artifactId>common-util</artifactId>
      <version>2.0.1</version>
</dependency>

該項(xiàng)目是日常業(yè)務(wù)開(kāi)發(fā)的工具類(lèi),目前包含以下部分:

  1. 時(shí)間轉(zhuǎn)換工具類(lèi)
  2. 郵件發(fā)送工具類(lèi)
  3. http請(qǐng)求工具類(lèi)
  4. 序列化工具類(lèi)
  5. 獲取本地IP和主機(jī)名工具類(lèi)
  6. BigDecimal計(jì)算類(lèi)

時(shí)間轉(zhuǎn)換工具類(lèi)

在日常開(kāi)發(fā)過(guò)程中,我們進(jìn)程會(huì)需要把Date轉(zhuǎn)成String,或者把String轉(zhuǎn)成Date,該工具類(lèi)大致上能滿(mǎn)足我們?nèi)罩鹃_(kāi)發(fā)需要:

  • getCurrentDate(),獲取當(dāng)期日志,只包含日期
  • calcIntervalDays(Date date1, Date date2),計(jì)算兩個(gè)日期間隔的天數(shù)
  • dayOfWeek(Date date),返回data對(duì)應(yīng)的是星期幾
  • getTodayMinutes(),獲取今天的分鐘數(shù),如今天18:05,則返回1805
  • getIntervalDate(Date time, int days),獲取指定間隔天數(shù)的日期,比如昨天 getIntervalDate(new Date(), -1)
  • dateToShortDateString(Date date),將date轉(zhuǎn)成String,輸出String只包含年月日
  • dateToString(Date date), 將date轉(zhuǎn)成String,輸出String包含年月日時(shí)分秒
  • stringToDate(String dateStr),將String轉(zhuǎn)成Date,默認(rèn)時(shí)區(qū)東八區(qū),TimeZone.getTimeZone("Asia/Shanghai")
  • dateToVoString(Date date) ,后端經(jīng)常會(huì)根據(jù)傳入Date生成View層的String傳給前端,該方法計(jì)算成相應(yīng)中文,會(huì)例如:
    • 1分鐘內(nèi):剛剛
    • 超過(guò)1分鐘并在1小時(shí)內(nèi):某分鐘前 (1分鐘前)
    • 超過(guò)1小時(shí)并在當(dāng)日內(nèi):某小時(shí)前(1小時(shí)前)
    • 昨天:昨天 + 小時(shí)分鐘(昨天 08:30)
    • 昨天之前并在當(dāng)年內(nèi):某月某日 + 小時(shí)分鐘(1月1日 08:30)
    • 隔年:某年某月某日 + 小時(shí)分鐘(2017年1月1日 08:30)

序列化工具類(lèi)

對(duì)于web服務(wù),我們需要把Object序列化成Json,另外也要Json也需要被反序列化成Object,這幾乎是后端開(kāi)發(fā)每天都要做的事,JacksonUtil提供了靜態(tài)方法方便對(duì)其操作,例如:

  • obj2json(Object obj),Object -> Json
  • obj2jsonSafe(Object obj),Object -> Json,內(nèi)部處理了Exception
  • obj2jsonForSoaEntity(Object obj),Object -> Json,針對(duì)SOA服務(wù)
  • removeSchema(Object obj),把soa 契約類(lèi)的schema字段刪除
  • json2pojo(String jsonStr, Class<T> clazz),把jsonStr反序列化成Class
  • json2pojoSafe(String jsonStr, Class<T> clazz),把jsonStr反序列化成Class,內(nèi)部處理了異常
  • json2list(String jsonArrayStr, Class<T> clazz),把jsonStr反序列化成Object List
  • json2map(String jsonStr),把jsonStr反序列化成map
  • json2map(String jsonStr, Class<T> clazz),把jsonStr反序列成包含JavaBean的Map

獲取本地IP和主機(jī)名工具類(lèi)

拿到本機(jī)IP不是一件困難的事,但是拿到正確的就比較難了,本工具類(lèi),是參考了開(kāi)源項(xiàng)目CAT內(nèi)部的實(shí)現(xiàn),提供靜態(tài)方法如下:

  • getLocalHostAddress(),返回本機(jī)IP
  • getLocalHostName(),返回主機(jī)名
  • getLocalInetAddress,返回InetAddress

BigDecimal計(jì)算類(lèi)

在和錢(qián)打交道的服務(wù)里,經(jīng)常會(huì)用到BigDecimal類(lèi),下面提供一些他的計(jì)算方法

  • subtract(double x, double y)
  • add(double x, double y)
  • multiply(double x, double y)
  • divide(double x, double y, int scale)
  • roundUp(double val),近似處理,向上取整
  • roundUp(double val, int scale), 近似處理,向上取整,scale保留點(diǎn)的位數(shù)
  • roundDown(double val)
  • roundDown(double val, int scale)

http請(qǐng)求工具類(lèi)

在服務(wù)里請(qǐng)求別的接口也是很常見(jiàn)的事

  • doGet(String url, Map<String, String> queryParam),get請(qǐng)求,queryParam是參數(shù)
  • doPost(String url, Map<String, String> params, String json),json 請(qǐng)求體內(nèi)是json字符串
  • ... doPost的重載方法

郵件發(fā)送工具類(lèi)

郵件工具類(lèi)是通過(guò)JavaEmail實(shí)現(xiàn),企業(yè)級(jí)項(xiàng)目一般都會(huì)專(zhuān)門(mén)的服務(wù)去發(fā)送郵件,但如果自己的小Demo,用工具類(lèi)發(fā)送Email也未嘗不可。示例Demo如下,有興趣的可以fork代碼自己研究一下,代碼有詳情的注釋。

public class EmailUtilTest {
    @Before
    public void before() throws GeneralSecurityException {
        // 發(fā)送郵箱配置,授權(quán)密碼可以去郵件運(yùn)營(yíng)商獲取
        EmailUtil.config(EmailUtil.SMTP_QQ(false), "xxx@qq.com", "xxxxxx");
    }

    @Test
    public void testSendText() throws MessagingException {
        System.out.println("test");
    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目地址 https://github.com/LJWLgl/CommonUtil 概述 開(kāi)發(fā)常用工具類(lèi)總結(jié),如果...
    _南軒閱讀 4,056評(píng)論 0 63
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,634評(píng)論 19 139
  • 凌晨一點(diǎn)鐘,打開(kāi)簡(jiǎn)書(shū),就是想簡(jiǎn)簡(jiǎn)單單的記錄下幾句文字,發(fā)現(xiàn)并沒(méi)有什么好寫(xiě)?,F(xiàn)在的寫(xiě),還緊緊限于靈感突現(xiàn),抓住機(jī)會(huì)寫(xiě)...
    天堂口的黑衣人閱讀 180評(píng)論 2 1
  • 我又一次看到他時(shí),心里想的是,終于來(lái)了。 那是夏天,畢業(yè)離校季,天特別熱,宿舍樓的走廊開(kāi)始出現(xiàn)好多舊衣服舊書(shū)...
    藍(lán)魚(yú)的海洋閱讀 372評(píng)論 0 0
  • 不知道今天二月二十幾號(hào),只知道是農(nóng)歷的正月初八,小俊寶從初三晚上開(kāi)始病到現(xiàn)在,心力交瘁的無(wú)奈讓我備受煎熬,...
    我的大馨妹閱讀 414評(píng)論 0 0

友情鏈接更多精彩內(nèi)容