Java常用工具類整合
一浪漠、引入依賴
<dependency>
<groupId>cn.gjing</groupId>
<artifactId>tools-common</artifactId>
<version>1.6.2</version>
</dependency>
二姜胖、允許跨域:
開(kāi)啟全局允許跨域, 在啟動(dòng)類或者任意類使用@EnableCors
注解即可,會(huì)走默認(rèn)配置栋操,也可以自定義配置,配置示例如下:
- yml方式
tools:
common:
cors:
# 支持的方法類型
allowed-methods: POST,GET,DELETE,PUT,OPTIONS
# 支持的請(qǐng)求頭
allowed-headers:
# 支持的域名
allowed-origins:
# 方法路徑
path: /**
max-age: 1800
- javaBean方式
/**
* @author Gjing
**/
@Configuration
public class CorsConfiguration {
@Bean
public CorsBean corsBean() {
CorsBean corsBean = new CorsBean();
corsBean.setAllowedMethods(new String[]{"POST"});
return corsBean;
}
}
三饱亮、結(jié)果bean:
1矾芙、ResultVO
通用返回結(jié)果模板
參數(shù) | 描述 |
---|---|
code | 狀態(tài)碼 |
message | 提示信息 |
data | 數(shù)據(jù) |
2、PageResult
分頁(yè)查詢返回結(jié)果集
參數(shù) | 描述 |
---|---|
totalPages | 總頁(yè)數(shù) |
CurrentPage | 當(dāng)前頁(yè)數(shù) |
totalRows | 總條數(shù) |
pageRows | 每頁(yè)的條數(shù) |
data | 數(shù)據(jù) |
3近上、ErrorResult
錯(cuò)誤返回模板
參數(shù) | 描述 |
---|---|
code | 狀態(tài)碼 |
message | 提示信息 |
四剔宪、參數(shù)校驗(yàn)工具類:
主要提供參數(shù)校驗(yàn)、處理,匹配等等壹无, 使用時(shí)通過(guò)ParamUtils.xxx()
使用葱绒,以下為該工具的所有方法介紹 :
1、isEmpty
判斷給定參數(shù)是否為空斗锭,可以是字符串地淀、包裝類型、數(shù)組岖是、集合等
參數(shù) | 描述 |
---|---|
param | 參數(shù) |
2帮毁、isNotEmpty
判斷給定是否不為空,可以是字符串豺撑、包裝類型烈疚、數(shù)組、集合等
參數(shù) | 描述 |
---|---|
param | 參數(shù) |
3聪轿、requireNotNull
該參數(shù)不能為空爷肝,為空拋出NPE,否則返回原值
參數(shù) | 描述 |
---|---|
param | 參數(shù) |
4、ListHasEmpty
判斷集合里是否含有空值
參數(shù) | 描述 |
---|---|
list | 集合 |
5灯抛、multiEmpty
檢查多個(gè)參數(shù)里面是否有空值
參數(shù) | 描述 |
---|---|
params | 多個(gè)參數(shù) |
6金赦、equals
判斷兩個(gè)參數(shù)是否相等
參數(shù) | 描述 |
---|---|
param1 | 參數(shù)1 |
param2 | 參數(shù)2 |
7、trim
去除字符串的空格
參數(shù) | 描述 |
---|---|
str | 字符串 |
8对嚼、trim
去除集合中的空元素
參數(shù) | 描述 |
---|---|
list | 集合 |
9素邪、removeSymbol
移除字符串兩邊的指定符號(hào)
參數(shù) | 描述 |
---|---|
str | 字符串 |
symbol | 符號(hào) |
10、removeStartSymbol
移除字符串開(kāi)始的指定符號(hào)
參數(shù) | 描述 |
---|---|
str | 字符串 |
symbol | 符號(hào) |
11猪半、removeEndSymbol
移除字符串末尾的指定符號(hào)
參數(shù) | 描述 |
---|---|
str | 字符串 |
symbol | 符號(hào) |
12、split
根據(jù)符號(hào)截取
參數(shù) | 描述 |
---|---|
str | 字符串 |
symbol | 符號(hào) |
13偷线、removeAllSymbol
移除字符串里的所有指定符號(hào)
參數(shù) | 描述 |
---|---|
str | 字符串 |
symbol | 符號(hào) |
14磨确、contains
判斷數(shù)組里是否包含指定的值
參數(shù) | 描述 |
---|---|
arr | 數(shù)組 |
val | 值 |
15、isEmail
判斷是否為email
參數(shù) | 描述 |
---|---|
字符串 |
16声邦、isMobileNumber
判斷是否是手機(jī)號(hào)碼
參數(shù) | 描述 |
---|---|
phone | 字符串 |
17乏奥、isTelPhone
判斷是不是電話號(hào)碼
參數(shù) | 描述 |
---|---|
tel | 字符串 |
18、isPostCode
判斷是否為郵編
參數(shù) | 描述 |
---|---|
postCode | 字符串 |
五亥曹、時(shí)間工具類:
對(duì)時(shí)間進(jìn)行操作邓了,使用時(shí)通過(guò)TimeUtils.xxx()
調(diào)用,該工具的所有方法介紹如下 :
六媳瞪、加密工具類
1骗炉、EncryptionUtils:
- EncryptionUtils.encodeMd5():MD5加密
- EncryptionUtils.encodeBase64():Base64加密
- EncryptionUtils.decodeBase64():Base64解密
2、ShaUtils:
- ShaUtils.encodeSha256Hmac():Sha356Hmac加密
- ShaUtils.sha1Hmac():sha1Hmac加密
3蛇受、AesUtils:
- AesUtils.encode():AES加密
- AesUtils.decode():AES解密
七句葵、隨機(jī)數(shù)工具類
用于隨機(jī)生成數(shù)字或字符串,使用時(shí)通過(guò)RandomUtils.xxx()
調(diào)用兢仰,該工具包含的所有方法如下 :
- RandomUtils.randomInt():獲取隨機(jī)整數(shù)乍丈,可設(shè)置最大值和最小值
- RandomUtils.getRandom():獲取一個(gè)Random實(shí)例
- RandomUtils.generateMixString():生成混合指定長(zhǎng)度字符串(數(shù)字、字母大小寫(xiě))
- RandomUtils.generateString():獲取指定長(zhǎng)度純字符串(字母大小寫(xiě))
- RandomUtils.generateNumber():獲取指定長(zhǎng)度數(shù)字字符串
八把将、Bean工具類
使用時(shí)通過(guò)BeanUtils.xxx()
調(diào)用
1轻专、copyProperties
屬性復(fù)制,用于將一個(gè)對(duì)象的屬性賦值到另一個(gè)對(duì)象察蹲,兩個(gè)對(duì)象間的參數(shù)名和數(shù)據(jù)類型必須相同
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
source | 源對(duì)象 |
target | 目標(biāo)對(duì)象 |
ignores | 忽略的字段请垛,設(shè)置后不會(huì)進(jìn)行復(fù)制 |
2、toBean
將map轉(zhuǎn)為bean對(duì)象
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
map | 需要轉(zhuǎn)為Bean的map |
beanClass | 目標(biāo)Bean的class |
3洽议、findMethod
查找類中的方法
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
clazz | 目標(biāo)類class |
methodName | 方法名 |
paramTypes | 方法參數(shù)類型 |
4叼屠、findDeclaredMethod
查找類中聲明的方法
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
clazz | 目標(biāo)類class |
methodName | 方法名 |
paramTypes | 方法參數(shù)類型 |
5、setFieldValue
給類中的某個(gè)字段設(shè)置值
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
o | 字段所在的對(duì)象 |
field | 字段 |
value | 值 |
6绞铃、getFieldValue
獲取某個(gè)字段的值
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
o | 字段所在的對(duì)象 |
field | 字段 |
7镜雨、toMap
將bean對(duì)象轉(zhuǎn)為map
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
bean | 需要轉(zhuǎn)為map的bean對(duì)象 |
8、getInterfaceType
獲取泛型接口中某個(gè)泛型的真實(shí)對(duì)象class
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
source | 實(shí)現(xiàn)泛型接口的類 |
typeInterface | 泛型接口 |
paramIndex | 泛型參數(shù)下標(biāo),0開(kāi)始 |
9荚坞、getGenericType
獲取某個(gè)泛型字段的真實(shí)對(duì)象class
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
type | 字段的泛型類型 |
paramIndex | 泛型參數(shù)下標(biāo)挑宠,0開(kāi)始 |
九、唯一ID生成工具類
項(xiàng)目中使用可以將IdUtils
注冊(cè)為一個(gè)bean以在其他地方進(jìn)行依賴注入, 或者將其設(shè)置為靜態(tài)的
, 不要出現(xiàn)重復(fù)的IdUtils
對(duì)象, 否則并發(fā)情況下會(huì)出現(xiàn)重復(fù),
如果要調(diào)用snowId
, 必須通過(guò)帶參數(shù)的構(gòu)造方法進(jìn)行創(chuàng)建實(shí)例
1颓影、uuid
獲取去除-
符號(hào)的uuid
public class Test{
public static void main(String[] args){
IdUtils idUtils = new IdUtils();
System.out.println(idUtils.uuid());
}
}
2各淀、snowId
得到一個(gè)唯一的ID,在多服務(wù)需要操作同一個(gè)數(shù)據(jù)表的情況下, 需要保證每個(gè)服務(wù)的centerId
和machineId
唯一
public class Test{
public static void main(String[] args){
IdUtils idUtils = new IdUtils(1,2);
for(int i = 0; i < 100; i++) {
System.out.println(idUtils.snowId());
}
}
}
十诡挂、郵件工具類
用于發(fā)送郵件碎浇,支持普通郵件和帶附件郵件,支持html格式文本,支持群發(fā)和抄送,返回true為發(fā)送成功,使用時(shí)通過(guò)EmailUtils.of()
生成實(shí)例之后在進(jìn)行其中的方法璃俗,of()
方法參數(shù)如下 :
參數(shù) | 描述 |
---|---|
host | smtp服務(wù)器地址,比如qq郵箱:smtp.qq.com |
password | 發(fā)送者郵箱密碼,有些郵箱需要用授權(quán)碼代替密碼 |
from | 發(fā)送人郵箱 |
該工具包含的所有方法如下 :
1奴璃、sendEmail
發(fā)送郵件,參數(shù)如下:
參數(shù) | 描述 |
---|---|
subject | 主題 |
body | 郵件內(nèi)容城豁,支持HTML |
files | 要發(fā)送的附件物理地址,不要可以傳null或者空數(shù)組 |
tos | 收件人郵箱賬號(hào)苟穆,多個(gè)使用逗號(hào)隔開(kāi) |
copyTo | 抄送人地址,多個(gè)用逗號(hào)隔開(kāi)唱星,不抄送可以傳null或者空字符串 |
完整示例如下 :
public class Test{
public static void main(String[] args) {
boolean b = EmailUtil.of("smtp.qq.com", "發(fā)送人密碼或者授權(quán)碼", "發(fā)送人郵箱")
.sendEmail("主題", "內(nèi)容",new String[]{"附件物理地址"},"收件人郵箱地址", "抄送人郵箱地址");
if (b) {
System.out.println("發(fā)送成功");
}
}
}
十一雳旅、二維碼工具類
二維碼工具類, 包含的所有方法如下 :
1、create()
根據(jù)文本內(nèi)容间聊,自定義寬度高度攒盈,自定義圖片格式,自定義配置信息哎榴,生成所需要的二維碼圖片沦童,所有參數(shù)如下
參數(shù) | 描述 |
---|---|
text | 文本內(nèi)容 |
filePath | 生成圖片路徑 |
width | 寬 |
height | 高 |
format | 圖片格式 ,png,img |
hintTypes | 自定義配置信息 |
2、createWithLogo()
自定義生成帶logo的二維碼圖片叹话,所有參數(shù)如下:
參數(shù) | 描述 |
---|---|
text | 文本內(nèi)容 |
filePath | 生成圖片路徑 |
logoPath | logo文件路徑 |
qrCodeWidth | 二維碼寬度 |
qrCodeHeight | 二維碼高度 |
logoWidth | logo寬度 |
logoHeight | logo高度 |
format | 圖片格式 |
3偷遗、read(String filePath)
解析二維碼,獲取其中文本信息
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
filePath | 圖片路徑 |
4、read(InputStream inputStream)
解析二維碼,獲取其中的文本信息
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
inputStream | 輸入流 |
5驼壶、read(String filePath, Map<DecodeHintType, Object> decodeHints)
自定義配置解析二維碼,獲取其中的文本信息
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
filePath | 圖片路徑 |
decodeHints | 解析配置信息 |
6氏豌、read(InputStream inputStream, Map<DecodeHintType, Object> decodeHints)
自定義配置解析二維碼,獲取其中的文本信息
參數(shù)說(shuō)明
參數(shù) | 描述 |
---|---|
inputStream | 輸入流 |
decodeHints | 解析配置信息 |
十二、驗(yàn)證碼工具類
用于生成英文和數(shù)字混合的驗(yàn)證碼热凹,使用時(shí)通過(guò)構(gòu)造AuthCodeUtils
在進(jìn)行調(diào)用其中的方法泵喘,構(gòu)造時(shí)參數(shù)如下 :
參數(shù) | 描述 |
---|---|
width | 驗(yàn)證碼圖片寬度 |
height | 驗(yàn)證碼圖片高度 |
codeCount | 驗(yàn)證碼字符個(gè)數(shù) |
lineCount | 驗(yàn)證碼干擾線數(shù) |
該工具下的所有方法如下:
1、writeToLocal
生成驗(yàn)證碼到本地般妙,案例如下
public class Test{
public static void main(String[] args) {
AuthCodeUtil authCodeUtil = new AuthCodeUtil(160,40,5,150);
try {
String path="/文件夾路徑/code.png";
//寫(xiě)入到本地時(shí)可以通過(guò)getCode()方法獲取生成的驗(yàn)證碼
String code = authCodeUtil.writeToLocal(path).getCode();
System.out.println(code);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2纪铺、getCode
獲取生成的驗(yàn)證碼字符
public class Test{
public static void main(String[] args){
String code = authCodeUtil.writeToLocal(xxx).getCode;
System.out.println(code);
}
}
3、write
以流的方式返回給前端碟渺,案例如下
public class Test{
@GetMapping("/code")
public void getCode(HttpServletResponse response, HttpServletRequest request) throws IOException {
AuthCodeUtil authCodeUtil = new AuthCodeUtil(100, 50, 4, 50);
response.setContentType("image/jpeg");
//禁止圖像緩存
response.setHeader("param", "no-cache");
response.setDateHeader("Expires", 0);
authCodeUtil.write(response.getOutputStream());
}
}
十三鲜锚、Spring Bean工具類
獲取Spring Bean和ApplicationContext
1、獲取Bean
public class Test{
@GetMapping("/test")
public void test(){
//通過(guò)class獲取
Test test = SpringBeanUtils.getBean(Test.class);
//通過(guò)bean name獲取
Object o = SpringBeanUtils.getBean("test");
}
}
2、獲取ApplicationContext
public class Test{
private ApplicationContext applicationContext;
public Test(){
this.applicationContext = SpringBeanUtils.getApplicationContext();
}
}
工具源碼地址:tools-common