天天看點

Java開發基礎工具包

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

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