構建列舉類,用來識別每個脫敏字段
/**
*@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...