Java 最全工具類(後端開發必備)

LJWLgl發表於2018-09-09

專案地址

github.com/LJWLgl/Comm…

概述

開發常用工具類總結,如果對你有用歡迎star~

匯入專案

<dependency>
      <groupId>io.github.ljwlgl</groupId>
      <artifactId>common-util</artifactId>
      <version>2.0.1</version>
</dependency>
複製程式碼

該專案是日常業務開發的工具類,目前包含以下部分:

  1. 時間轉換工具類
  2. 郵件傳送工具類
  3. http請求工具類
  4. 序列化工具類
  5. 獲取本地IP和主機名工具類
  6. BigDecimal計算類

時間轉換工具類

在日常開發過程中,我們程式會需要把Date轉成String,或者把String轉成Date,該工具類大致上能滿足我們日誌開發需要:

  • getCurrentDate(),獲取當期日誌,只包含日期
  • calcIntervalDays(Date date1, Date date2),計算兩個日期間隔的天數
  • dayOfWeek(Date date),返回data對應的是星期幾
  • getTodayMinutes(),獲取今天的分鐘數,如今天18:05,則返回1805
  • getIntervalDate(Date time, int days),獲取指定間隔天數的日期,比如昨天 getIntervalDate(new Date(), -1)
  • dateToShortDateString(Date date),將date轉成String,輸出String只包含年月日
  • dateToString(Date date), 將date轉成String,輸出String包含年月日時分秒
  • stringToDate(String dateStr),將String轉成Date,預設時區東八區,TimeZone.getTimeZone("Asia/Shanghai")
  • dateToVoString(Date date) ,後端經常會根據傳入Date生成View層的String傳給前端,該方法計算成相應中文,會例如:
    • 1分鐘內:剛剛
    • 超過1分鐘並在1小時內:某分鐘前 (1分鐘前)
    • 超過1小時並在當日內:某小時前(1小時前)
    • 昨天:昨天 + 小時分鐘(昨天 08:30)
    • 昨天之前並在當年內:某月某日 + 小時分鐘(1月1日 08:30)
    • 隔年:某年某月某日 + 小時分鐘(2017年1月1日 08:30)

序列化工具類

對於web服務,我們需要把Object序列化成Json,另外也要Json也需要被反序列化成Object,這幾乎是後端開發每天都要做的事,JacksonUtil提供了靜態方法方便對其操作,例如:

  • obj2json(Object obj),Object -> Json
  • obj2jsonSafe(Object obj),Object -> Json,內部處理了Exception
  • obj2jsonForSoaEntity(Object obj),Object -> Json,針對SOA服務
  • removeSchema(Object obj),把soa 契約類的schema欄位刪除
  • json2pojo(String jsonStr, Class clazz),把jsonStr反序列化成Class
  • json2pojoSafe(String jsonStr, Class clazz),把jsonStr反序列化成Class,內部處理了異常
  • json2list(String jsonArrayStr, Class clazz),把jsonStr反序列化成Object List
  • json2map(String jsonStr),把jsonStr反序列化成map
  • json2map(String jsonStr, Class clazz),把jsonStr反序列成包含JavaBean的Map

獲取本地IP和主機名工具類

拿到本機IP不是一件困難的事,但是拿到正確的就比較難了,本工具類,是參考了開源專案CAT內部的實現,提供靜態方法如下:

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

BigDecimal計算類

在和錢打交道的服務裡,經常會用到BigDecimal類,下面提供一些他的計算方法

  • 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保留點的位數
  • roundDown(double val)
  • roundDown(double val, int scale)

http請求工具類

在服務裡請求別的介面也是很常見的事

  • doGet(String url, Map<String, String> queryParam),get請求,queryParam是引數
  • doPost(String url, Map<String, String> params, String json),json 請求體內是json字串
  • ... doPost的過載方法

郵件傳送工具類

郵件工具類是通過JavaEmail實現,企業級專案一般都會專門的服務去傳送郵件,但如果自己的小Demo,用工具類傳送Email也未嘗不可。示例Demo如下,有興趣的可以fork程式碼自己研究一下,程式碼有詳情的註釋。

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

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

}
複製程式碼

相關文章