專案地址
概述
開發常用工具類總結,如果對你有用歡迎star~
匯入專案
<dependency>
<groupId>io.github.ljwlgl</groupId>
<artifactId>common-util</artifactId>
<version>2.0.1</version>
</dependency>
複製程式碼
該專案是日常業務開發的工具類,目前包含以下部分:
- 時間轉換工具類
- 郵件傳送工具類
- http請求工具類
- 序列化工具類
- 獲取本地IP和主機名工具類
- 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");
}
}
複製程式碼