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),目前包含以下部分:
- 時(shí)間轉(zhuǎn)換工具類(lèi)
- 郵件發(fā)送工具類(lèi)
- http請(qǐng)求工具類(lèi)
- 序列化工具類(lèi)
- 獲取本地IP和主機(jī)名工具類(lèi)
- 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");
}
}