最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏詳解

 更新時(shí)間:2024年01月26日 10:13:23   作者:ThinkPet  
這篇文章主要介紹了SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏詳解,因?yàn)榘咐a用到了hutool提供的DesensitizedUtil數(shù)據(jù)脫敏工具類,這里要引入hutool的依賴,如果你需要自定義 數(shù)據(jù)脫敏的邏輯,可以不引入這個(gè)依賴,需要的朋友可以參考下

引入hutool依賴

因?yàn)榘咐a用到了hutool提供的DesensitizedUtil數(shù)據(jù)脫敏工具類,這里要引入hutool的依賴。

如果你需要自定義 數(shù)據(jù)脫敏的邏輯,可以不引入這個(gè)依賴

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.8</version>
</dependency>

自定義jackson序列化器

自定義一個(gè)手機(jī)號(hào)脫敏序列化器

package com.example.demo.plugin;
import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Slf4j
@Component
public class MobileMskJsonSerializer extends JsonSerializer<String> {
    @Override
    public void serialize(String s,
                          JsonGenerator jsonGenerator,
                          SerializerProvider serializerProvider) throws IOException {
        String s1 = DesensitizedUtil.mobilePhone(s);
        log.info("mobilePhone數(shù)據(jù):{}脫敏后的值是:{}",s,s1);
        jsonGenerator.writeString(s1);
    }
}

自定義一個(gè)郵箱脫敏序列化器

package com.example.demo.plugin;
import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Slf4j
@Component
public class MailMskJsonSerializer extends JsonSerializer<String> {
    @Override
    public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        String s1 = DesensitizedUtil.email(s);
        log.info("email數(shù)據(jù):{}脫敏后的值是:{}",s,s1);
        jsonGenerator.writeString(s1);
    }
}

注冊(cè)剛剛自定義的json序列化器

package com.example.demo.plugin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonCfg {
    @Autowired
    private MobileMskJsonSerializer  mobileMskJsonSerializer;
    @Autowired
    private MailMskJsonSerializer mailMskJsonSerializer;
    /**
     * 可以同時(shí)注冊(cè)多個(gè)自定義的jackson 序列化器
     * @return
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer objectMapperBuilderCustomizer(){
        return builder -> {
            builder.serializerByType(String.class,mobileMskJsonSerializer);
            builder.serializerByType(String.class,mailMskJsonSerializer);
        };
    }
}

測(cè)試@JsonSerialize效果

在實(shí)體類中使用@JsonSerialize注解

package com.example.demo.orm.po;
import cn.hutool.core.util.DesensitizedUtil;
import com.example.demo.plugin.MailMskJsonSerializer;
import com.example.demo.plugin.MobileMskJsonSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Account implements Serializable {
    private static final long serialVersionUID = -8114863398578320034L;
    private Integer id;
    private String username;
    // @JsonSerialize 既可以用在字段上 ,也可以用在類上
    // 用在字段上時(shí),只對(duì)某個(gè)字段生效
    // 用在類上時(shí),對(duì)類中所有字段生效.(優(yōu)先級(jí)更高)
    // 一般常用在 字段上,對(duì)某個(gè)字段做特殊的序列化處理
    //使用 手機(jī)號(hào)脫敏序列號(hào)器
    @JsonSerialize(using = MobileMskJsonSerializer.class)
    private String mobile;
    //使用 郵箱脫敏序列號(hào)器
    @JsonSerialize(using = MailMskJsonSerializer.class)
    private String mail;
}

測(cè)試查詢結(jié)果

@Test
void test81902() throws JsonProcessingException {
        Account oneById = accountMapper.findOneById(17);
        System.err.println(oneById);
        //使用jackson 序列化java對(duì)象
        ObjectMapper objectMapper = new ObjectMapper();
        String msk = objectMapper.writerWithDefaultPrettyPrinter()
                .writeValueAsString(oneById);
        System.err.println(msk);
 }

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7135ce0a]
Account(id=17, username=ert, mobile=13273629312, mail=kew5612@163.com)
2023-07-05 20:28:38.536  INFO 17952 --- [           main] c.e.demo.plugin.MobileMskJsonSerializer  : mobilePhone數(shù)據(jù):13273629312脫敏后的值是:132****9312
2023-07-05 20:28:38.537  INFO 17952 --- [           main] c.e.demo.plugin.MailMskJsonSerializer    : email數(shù)據(jù):kew5612@163.com脫敏后的值是:k******@163.com
{
  "id" : 17,
  "username" : "ert",
  "mobile" : "132****9312",
  "mail" : "k******@163.com"
}

到此這篇關(guān)于SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏詳解的文章就介紹到這了,更多相關(guān)SpringBoot敏感字段數(shù)據(jù)脫敏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于SpringBoot整合RabbitMQ實(shí)現(xiàn)死信隊(duì)列

    關(guān)于SpringBoot整合RabbitMQ實(shí)現(xiàn)死信隊(duì)列

    這篇文章主要介紹了關(guān)于SpringBoot整合RabbitMQ實(shí)現(xiàn)死信隊(duì)列,死信隊(duì)列實(shí)際上就是一個(gè)普通的隊(duì)列,只是這個(gè)隊(duì)列跟死信交換機(jī)進(jìn)行了綁定,用來存放死信而已,需要的朋友可以參考下
    2023-05-05
  • SpringBoot項(xiàng)目速度提升之延遲初始化(Lazy Initialization)詳解

    SpringBoot項(xiàng)目速度提升之延遲初始化(Lazy Initialization)詳解

    延遲初始化(Lazy?Initialization)是一種在需要時(shí)才創(chuàng)建或加載對(duì)象的策略,以減少啟動(dòng)時(shí)間和資源消耗,本文就來講講延遲初始化的具體使用吧
    2023-05-05
  • Security中的WebSecurityConfigurerAdapter詳解

    Security中的WebSecurityConfigurerAdapter詳解

    這篇文章主要介紹了Security中的WebSecurityConfigurerAdapter詳解,今天我們要進(jìn)一步的的學(xué)習(xí)如何自定義配置Spring?Security,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • springmvc實(shí)現(xiàn)文件上傳功能

    springmvc實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了springmvc實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • JavaWeb Session 會(huì)話管理實(shí)例詳解

    JavaWeb Session 會(huì)話管理實(shí)例詳解

    這篇文章主要介紹了JavaWeb Session 會(huì)話管理的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(30)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(30)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • 如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎

    如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎

    這篇文章主要介紹了在dos窗口中編譯和運(yùn)行java文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java Agents代理是什么

    Java Agents代理是什么

    Java代理Agents通過提供使我們能夠侵入JVM中正在運(yùn)行的Java程序的服務(wù),在最底層工作。Java的這一強(qiáng)大但不可思議的部分具有在錯(cuò)誤操作時(shí)使JVM崩潰的能力。本文簡(jiǎn)要介紹了這個(gè)概念,并介紹了它的工作原理。需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Spring的BeanUtils.copyProperties屬性復(fù)制避坑指南

    Spring的BeanUtils.copyProperties屬性復(fù)制避坑指南

    這篇文章主要介紹了Spring的BeanUtils.copyProperties屬性復(fù)制避坑指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot項(xiàng)目的多文件兼多線程上傳下載

    SpringBoot項(xiàng)目的多文件兼多線程上傳下載

    本文主要介紹了SpringBoot項(xiàng)目的多文件兼多線程上傳下載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

贺兰县| 外汇| 行唐县| 饶河县| 宽甸| 古交市| 绥中县| 始兴县| 花莲县| 盘锦市| 家居| 新晃| 新余市| 扬中市| 桓台县| 凌海市| 大埔县| 绩溪县| 河南省| 秭归县| 平度市| 中超| 依兰县| 绥德县| 西贡区| 贵港市| 通山县| 屏边| 巨野县| 淮滨县| 兴海县| 闻喜县| 香格里拉县| 浦江县| 剑河县| 称多县| 三亚市| 奉节县| 沧源| 东兰县| 象州县|