Java常用工具類整合
一、引入依賴
<dependency>
<groupId>cn.gjing</groupId>
<artifactId>tools-common</artifactId>
<version>1.6.2</version>
</dependency>
二、允許跨域:
開啟全局允許跨域, 在啟動類或者任意類使用
@EnableCors
注解即可,會走預設配置,也可以自定義配置,配置示例如下:
- yml方式
tools:
common:
cors:
# 支援的方法類型
allowed-methods: POST,GET,DELETE,PUT,OPTIONS
# 支援的請求頭
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;
}
}
三、結果bean:
1、ResultVO
通用傳回結果模闆
參數 | 描述 |
---|---|
code | 狀态碼 |
message | 提示資訊 |
data | 資料 |
2、PageResult
分頁查詢傳回結果集
totalPages | 總頁數 |
CurrentPage | 目前頁數 |
totalRows | 總條數 |
pageRows | 每頁的條數 |
3、ErrorResult
錯誤傳回模闆
四、參數校驗工具類:
主要提供參數校驗、處理,比對等等, 使用時通過
ParamUtils.xxx()
使用,以下為該工具的所有方法介紹 :
1、isEmpty
判斷給定參數是否為空,可以是字元串、包裝類型、數組、集合等
param |
2、isNotEmpty
判斷給定是否不為空,可以是字元串、包裝類型、數組、集合等
3、requireNotNull
該參數不能為空,為空抛出NPE,否則傳回原值
4、ListHasEmpty
判斷集合裡是否含有空值
list | 集合 |
5、multiEmpty
檢查多個參數裡面是否有空值
params | 多個參數 |
6、equals
判斷兩個參數是否相等
param1 | 參數1 |
param2 | 參數2 |
7、trim
去除字元串的空格
str | 字元串 |
8、trim
去除集合中的空元素
9、removeSymbol
移除字元串兩邊的指定符号
symbol | 符号 |
10、removeStartSymbol
移除字元串開始的指定符号
11、removeEndSymbol
移除字元串末尾的指定符号
12、split
根據符号截取
13、removeAllSymbol
移除字元串裡的所有指定符号
14、contains
判斷數組裡是否包含指定的值
arr | 數組 |
val | 值 |
15、isEmail
判斷是否為email
16、isMobileNumber
判斷是否是手機号碼
phone |
17、isTelPhone
判斷是不是電話号碼
tel |
18、isPostCode
判斷是否為郵編
postCode |
五、時間工具類:
對時間進行操作,使用時通過
TimeUtils.xxx()
調用,該工具的所有方法介紹如下 :
六、加密工具類
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解密
七、随機數工具類
用于随機生成數字或字元串,使用時通過
RandomUtils.xxx()
調用,該工具包含的所有方法如下 :
- RandomUtils.randomInt():擷取随機整數,可設定最大值和最小值
- RandomUtils.getRandom():擷取一個Random執行個體
- RandomUtils.generateMixString():生成混合指定長度字元串(數字、字母大小寫)
- RandomUtils.generateString():擷取指定長度純字元串(字母大小寫)
- RandomUtils.generateNumber():擷取指定長度數字字元串
八、Bean工具類
使用時通過
BeanUtils.xxx()
調用
1、copyProperties
屬性複制,用于将一個對象的屬性指派到另一個對象,兩個對象間的
參數名和資料類型必須相同
參數說明
source | 源對象 |
target | 目标對象 |
ignores | 忽略的字段,設定後不會進行複制 |
2、toBean
将map轉為bean對象
map | 需要轉為Bean的map |
beanClass | 目标Bean的class |
3、findMethod
查找類中的方法
clazz | 目标類class |
methodName | 方法名 |
paramTypes | 方法參數類型 |
4、findDeclaredMethod
查找類中聲明的方法
5、setFieldValue
給類中的某個字段設定值
o | 字段所在的對象 |
field | 字段 |
value |
6、getFieldValue
擷取某個字段的值
7、toMap
将bean對象轉為map
bean | 需要轉為map的bean對象 |
8、getInterfaceType
擷取泛型接口中某個泛型的真實對象class
實作泛型接口的類 | |
typeInterface | 泛型接口 |
paramIndex | 泛型參數下标,0開始 |
9、getGenericType
擷取某個泛型字段的真實對象class
type | 字段的泛型類型 |
九、唯一ID生成工具類
**項目中使用可以将
IdUtils
注冊為一個bean以在其他地方進行依賴注入, 或者将其設定為
靜态的
, 不要出現重複的
IdUtils
對象, 否則并發情況下會出現重複,
如果要調用
snowId
, 必須通過帶參數的構造方法進行建立執行個體**
1、uuid
擷取去除
-
符号的uuid
public class Test{
public static void main(String[] args){
IdUtils idUtils = new IdUtils();
System.out.println(idUtils.uuid());
}
}
2、snowId
得到一個唯一的ID,在多服務需要操作同一個資料表的情況下, 需要保證每個服務的
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());
}
}
}
十、郵件工具類
用于發送郵件,支援普通郵件和帶附件郵件,支援html格式文本,支援群發和抄送,傳回true為發送成功,使用時通過
EmailUtils.of()
生成執行個體之後在進行其中的方法,
of()
方法參數如下 :
host | smtp伺服器位址,比如qq郵箱:smtp.qq.com |
password | 發送者郵箱密碼,有些郵箱需要用授權碼代替密碼 |
from | 發送人郵箱 |
該工具包含的所有方法如下 :
1、sendEmail
發送郵件,參數如下:
subject | 主題 |
body | 郵件内容,支援HTML |
files | 要發送的附件實體位址,不要可以傳null或者空數組 |
tos | 收件人郵箱賬号,多個使用逗号隔開 |
copyTo | 抄送人位址,多個用逗号隔開,不抄送可以傳null或者空字元串 |
完整示例如下 :
public class Test{
public static void main(String[] args) {
boolean b = EmailUtil.of("smtp.qq.com", "發送人密碼或者授權碼", "發送人郵箱")
.sendEmail("主題", "内容",new String[]{"附件實體位址"},"收件人郵箱位址", "抄送人郵箱位址");
if (b) {
System.out.println("發送成功");
}
}
}
十一、二維碼工具類
二維碼工具類, 包含的所有方法如下 :
1、create()
根據文本内容,自定義寬度高度,自定義圖檔格式,自定義配置資訊,生成所需要的二維碼圖檔,所有參數如下
text | 文本内容 |
filePath | 生成圖檔路徑 |
width | 寬 |
height | 高 |
format | 圖檔格式 ,png,img |
hintTypes | 自定義配置資訊 |
2、createWithLogo()
自定義生成帶logo的二維碼圖檔,所有參數如下:
logoPath | logo檔案路徑 |
qrCodeWidth | 二維碼寬度 |
qrCodeHeight | 二維碼高度 |
logoWidth | logo寬度 |
logoHeight | logo高度 |
圖檔格式 |
3、read(String filePath)
解析二維碼,擷取其中文本資訊
圖檔路徑 |
4、read(InputStream inputStream)
解析二維碼,擷取其中的文本資訊
inputStream | 輸入流 |
5、read(String filePath, Map decodeHints)
自定義配置解析二維碼,擷取其中的文本資訊
decodeHints | 解析配置資訊 |
6、read(InputStream inputStream, Map decodeHints)
十二、驗證碼工具類
用于生成英文和數字混合的驗證碼,使用時通過構造
AuthCodeUtils
在進行調用其中的方法,構造時參數如下 :
驗證碼圖檔寬度 | |
驗證碼圖檔高度 | |
codeCount | 驗證碼字元個數 |
lineCount | 驗證碼幹擾線數 |
該工具下的所有方法如下:
1、writeToLocal
生成驗證碼到本地,案例如下
public class Test{
public static void main(String[] args) {
AuthCodeUtil authCodeUtil = new AuthCodeUtil(160,40,5,150);
try {
String path="/檔案夾路徑/code.png";
//寫入到本地時可以通過getCode()方法擷取生成的驗證碼
String code = authCodeUtil.writeToLocal(path).getCode();
System.out.println(code);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、getCode
擷取生成的驗證碼字元
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(){
//通過class擷取
Test test = SpringBeanUtils.getBean(Test.class);
//通過bean name擷取
Object o = SpringBeanUtils.getBean("test");
}
}
2、擷取ApplicationContext
public class Test{
private ApplicationContext applicationContext;
public Test(){
this.applicationContext = SpringBeanUtils.getApplicationContext();
}
}
工具源碼位址:
tools-common