溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于注解的 java 加簽驗(yàn)簽框架 checksum

發(fā)布時間:2020-06-19 01:04:44 來源:網(wǎng)絡(luò) 閱讀:138015 作者:葉止水ryo 欄目:編程語言

checksum

基于 java 注解生成加簽驗(yàn)簽 checksum。

開源地址:github checksum

創(chuàng)作緣由

原來的代碼中,checksum 的生成是用的工具類方法。

后來發(fā)現(xiàn)如下的問題:

  1. 有些字段太大,不想?yún)⑴c驗(yàn)簽,但是無法方便的調(diào)整。

  2. 不同系統(tǒng)的 checksum 字段不同,只好把工具方法 copy 過去,改來改去。

感覺這樣有很大的弊端,完全失去了靈活性。

特性

  • 基于注解的 checksum 加簽驗(yàn)簽

  • Fluent 流式語法

  • 支持靈活的策略自定義

更新記錄

更新記錄

快速開始

環(huán)境要求

jdk7+

maven 3.x+

引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>checksum</artifactId>
    <version>0.0.1</version>
</dependency>

定義待加簽的示例對象

  • User.java
public class User {

    @CheckField
    private String name;

    @CheckField
    private String password;

    private String address;

    @Checksum
    private String checksum;

    //Getter & Setter
    //toString()
}

核心注解

@CheckField 表示參與加簽的字段信息

@Checksum 表示加簽結(jié)果存放的字段

調(diào)用測試

package com.github.houbb.checksum.core;

import com.github.houbb.checksum.model.User;
import org.junit.Assert;
import org.junit.Test;

/**
 * @author binbin.hou
 * @since 0.0.1
 */
public class ChecksumBsTest {

    @Test
    public void checksumTest() {
        User user = buildUser();
        final String checksum = ChecksumBs
                .newInstance(user)
                .checksum();

        Assert.assertEquals("8D62F2BC49A9AB51280C8F42A483ED54", checksum);
    }

    @Test
    public void fillTest() {
        User user = buildUser();
        ChecksumBs.newInstance(user).fill();

        Assert.assertEquals("User{name='ryo', password='1234', address='china', checksum='8D62F2BC49A9AB51280C8F42A483ED54'}",
                user.toString());
    }

    /**
     * 構(gòu)建示例對象
     * @return 構(gòu)建示例對象
     */
    private User buildUser() {
        User user = new User();
        user.name("ryo")
                .password("1234")
                .address("china");
        return user;
    }

}

ChecksumBs 引導(dǎo)類

用來創(chuàng)建加簽的相關(guān)配置及實(shí)現(xiàn)。

配置核心方法

方法 默認(rèn)值 備注
newInstance() 新建 ChecksumBs 實(shí)例(static)
newInstance(object) 新建 ChecksumBs 實(shí)例,并且指定待加簽的對象(static,建議使用)
target(Object) 指定待加簽的對象
secret(ISecret) DefaultMd5Secret 指定加密的策略,默認(rèn)使用 md5 加密
sort(ISort) NameAscSort 指定排序的策略,默認(rèn)根據(jù)字段的名稱正序排列表
cache(ICache) DefaultFieldListCache 指定字段的緩存策略,默認(rèn)使用本地 map 進(jìn)行字段信息緩存

調(diào)用核心方法

方法 返回值 備注
checksum() String 返回加簽的結(jié)果
fill() 將上面 checksum 的結(jié)果設(shè)置到 @Checksum 標(biāo)識的字段中

自定義

上述 ISecret/ISort/ICache 都是支持自定義的。

一般只需要重新定義 ISecret 即可。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI