用spring標籤實現欄位的脫敏

2021-08-21 12:01:49 字數 2820 閱讀 8117

構建列舉類,用來識別每個脫敏字段

/**

*@author tori

* 2018/7/16 上午11:19

*/public

enum sensitivetype

建立處理脫敏欄位的工具類(這裡只展示了mobile,其他類推)

/**

*@author tori

* 2018/7/16 下午1:57

*/public

class

sensitiveutil

return stringutils.left(mobile, 2).concat(

stringutils.removestart(

stringutils.leftpad(

stringutils.right(mobile, 4), stringutils.length(mobile), "*"),

"***"));

}}

建立標籤類(構建標籤)

/**

*@author tori

* 2018/7/16 上午11:33

*///@target()

@retention(retentionpolicy.runtime)

@jacksonannotationsinside

@jsonserialize(using = sensitiveinfoserialize.class)

public @inte***ce

sensitiveinfo

有時在寫標籤類時會碰到@target,@retention還有@order的用法,這裡簡單的概括一下:

@target

這個註解就是表明該註解類能夠作用的範圍,也就是能夠註解在哪,比如 類、方法、引數等。

下面是他的一些引數:

@target(elementtype.type) //介面、類、列舉、註解

@target(elementtype.field) //字段、列舉的常量

@target(elementtype.method) //方法

@target(elementtype.parameter) //方法引數

@target(elementtype.constructor) //建構函式

@target(elementtype.local_variable)//區域性變數

@target(elementtype.annotation_type)//註解

@target(elementtype.package) ///包

裡面的引數是可以多選的,使用方法比如@target()。

@retention

這個註解是保留說明,也就是表明這個註解所註解的類能在**保留,他有三個屬性值:

retentionpolicy.source —— 這種型別的annotations只在源**級別保留,編譯時就會被忽略

retentionpolicy.class —— 這種型別的annotations編譯時被保留,在class檔案中存在,但jvm將會忽略

retentionpolicy.runtime —— 這種型別的annotations將被jvm保留,所以他們能在執行時被jvm或其他使用反射機制的**所讀取和使用。

從上面可以看出一般使用的事第三個屬性,其餘兩個屬性,說實話 我也不清楚什麼情況下使用這兩種。

@order

@order標記定義了元件的載入順序,這個標記包含乙個value屬性。屬性接受整形值。如:1,2 等等。值越小擁有越高的優先順序。ordered.highest_precedence這個屬性值是最高優先順序的屬性,它的值是-2147483648,對應的最低屬性值是ordered.lowest_precedence,它的值是2147483647。

最重要的標籤序列化處理類:

/**

*@author tori

* 2018/7/16 下午1:33

*/public

class

sensitiveinfoserialize

extends

jsonserializer

implements

contextualserializer

public

sensitiveinfoserialize() {}

@override

public

void

serialize(string value, jsongenerator gen, serializerprovider serializers) throws ioexception, jsonprocessingexception

}@override

if (property != null)

if (sensitiveinfo != null)

}return prov.findvalueserializer(property.gettype(), property);

}return prov.findnullvalueserializer(property);

}}

就是使用和測試啦:

/**

* 手機號碼

*/@sensitiveinfo(sensitivetype.mobile)

private string mobile;

這樣一來獲得的json中mobile,email,openid就可以隱藏部分內容,實現脫敏了。

以上是對spring標籤實現脫敏的流程描述。☺

spring 自定義標籤實現

參考資料 dubbo對spring自定義標籤的擴充套件的實現 spring官方文件 42.1中,介紹了如何自定義spring標籤,步驟如下 1 編寫乙個xml schema描述您的自定義元素 2 編寫自定義命名空間處理程式實現,實現namespackhandler介面 3 編寫乙個或多個自定義的be...

用img標籤實現資料提交

其實不一定要使用script標籤,用img標籤也可以實現。如果遠端要回傳大量資料,而不是bool型別的標誌,則需要使用script標籤 把下面 儲存到本地html,使用者名稱 dexte r 密碼 888 就能收到成功訊息。html code script function login name,p...

Spring的幾個註解標籤

對spring的註解標籤剛剛接觸,所以就找了幾個常用的,記錄下,感覺註解用了之後,會在 xml檔案中大大減少配置量。以前我們每個bean都得到配置檔案中配置關聯下。spring2.5後,引入了完整的annotation配置註解,使得我們的程式配置更簡單更容易維護。component controll...