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

mybatis-plus的SafetyEncryptProcessor安全加密處理示例解析

 更新時(shí)間:2023年08月28日 09:36:04   作者:codecraft  
這篇文章主要為大家介紹了mybatis-plus的SafetyEncryptProcessor安全加密處理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

本文主要研究一下mybatis-plus的SafetyEncryptProcessor

SafetyEncryptProcessor

mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/SafetyEncryptProcessor.java

public class SafetyEncryptProcessor implements EnvironmentPostProcessor {
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        /**
         * 命令行中獲取密鑰
         */
        String mpwKey = null;
        for (PropertySource<?> ps : environment.getPropertySources()) {
            if (ps instanceof SimpleCommandLinePropertySource) {
                SimpleCommandLinePropertySource source = (SimpleCommandLinePropertySource) ps;
                mpwKey = source.getProperty("mpw.key");
                break;
            }
        }
        /**
         * 處理加密內(nèi)容
         */
        if (StringUtils.isNotBlank(mpwKey)) {
            HashMap<String, Object> map = new HashMap<>();
            for (PropertySource<?> ps : environment.getPropertySources()) {
                if (ps instanceof OriginTrackedMapPropertySource) {
                    OriginTrackedMapPropertySource source = (OriginTrackedMapPropertySource) ps;
                    for (String name : source.getPropertyNames()) {
                        Object value = source.getProperty(name);
                        if (value instanceof String) {
                            String str = (String) value;
                            if (str.startsWith("mpw:")) {
                                map.put(name, AES.decrypt(str.substring(4), mpwKey));
                            }
                        }
                    }
                }
            }
            // 將解密的數(shù)據(jù)放入環(huán)境變量,并處于第一優(yōu)先級(jí)上
            if (CollectionUtils.isNotEmpty(map)) {
                environment.getPropertySources().addFirst(new MapPropertySource("custom-encrypt", map));
            }
        }
    }
}

SafetyEncryptProcessor實(shí)現(xiàn)了EnvironmentPostProcessor接口,在postProcessEnvironment方法中先是找到mpw.key,然后遍歷所有PropertySource的所有屬性,找到mpw:開頭的,然后進(jìn)行解密并替換到密文,最后放在environment的第一個(gè)PropertySource

spring.factories

mybatis-plus-boot-starter/src/main/resources/META-INF/spring.factories

# Auto Configure
org.springframework.boot.env.EnvironmentPostProcessor=\
  com.baomidou.mybatisplus.autoconfigure.SafetyEncryptProcessor

小結(jié)

之前的文章聊聊springboot的EnvironmentPostProcessor提到springboot提供了EnvironmentPostProcessor接口,該接口有postProcessEnvironment方法,其中envrionment參數(shù)類型為ConfigurableEnvironment,即應(yīng)用可以通過(guò)實(shí)現(xiàn)這個(gè)接口進(jìn)行env環(huán)境變量的操作。而mybatis-plus的SafetyEncryptProcessor正是一個(gè)實(shí)戰(zhàn)的好例子。

以上就是mybatis-plus的SafetyEncryptProcessor安全加密處理示例解析的詳細(xì)內(nèi)容,更多關(guān)于mybatis-plus SafetyEncryptProcessor的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MyBatis批量插入/修改/刪除MySql數(shù)據(jù)

    MyBatis批量插入/修改/刪除MySql數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于MyBatis批量插入/修改/刪除MySql數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • @ConfigurationProperties及@NestedConfigurationProperty的使用解讀

    @ConfigurationProperties及@NestedConfigurationProperty的使用解讀

    本文分享了如何在Spring Boot應(yīng)用中使用`@ConfigurationProperties`和`@NestedConfigurationProperty`進(jìn)行屬性綁定,提供了一個(gè)自定義配置的示例,并附帶個(gè)人經(jīng)驗(yàn)供參考
    2026-02-02
  • 詳解SpringSecurity處理會(huì)話管理和注銷功能

    詳解SpringSecurity處理會(huì)話管理和注銷功能

    本文介紹了詳解SpringSecurity處理會(huì)話管理和注銷功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • SpringBoot整合Quartz方法詳解

    SpringBoot整合Quartz方法詳解

    這篇文章詳解介紹了SpringBoot整合Quartz的方法,Quartz是一個(gè)比較成熟了的定時(shí)任務(wù)框架,本文實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-04-04
  • Java中ThreadLocal的用法及原理詳解

    Java中ThreadLocal的用法及原理詳解

    這篇文章主要介紹了Java中ThreadLocal的用法及原理詳解,在并發(fā)編程中,如果一個(gè)類變量被多個(gè)線程操作,會(huì)造成線程安全問(wèn)題,使用ThreadLocal可以讓每個(gè)線程擁有線程內(nèi)部的變量,防止多個(gè)線程操作一個(gè)類變量造成的線程安全問(wèn)題,需要的朋友可以參考下
    2023-09-09
  • Java中Map接口使用以及有關(guān)集合的面試知識(shí)點(diǎn)匯總

    Java中Map接口使用以及有關(guān)集合的面試知識(shí)點(diǎn)匯總

    在java面試過(guò)程中,Map時(shí)常會(huì)被作為一個(gè)面試點(diǎn)來(lái)問(wèn),下面這篇文章主要給大家介紹了關(guān)于Java中Map接口使用以及有關(guān)集合的面試知識(shí)點(diǎn)匯總的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 談?wù)凷pring AOP中@Aspect的高級(jí)用法示例

    談?wù)凷pring AOP中@Aspect的高級(jí)用法示例

    在Spring AOP中目前只有執(zhí)行方法這一個(gè)連接點(diǎn),下面這篇文章主要給大家介紹了關(guān)于Spring AOP中@Aspect的高級(jí)用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 詳細(xì)分析JAVA 線程池

    詳細(xì)分析JAVA 線程池

    這篇文章主要介紹了JAVA 線程池的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java使用雙異步實(shí)現(xiàn)將Excel的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)

    Java使用雙異步實(shí)現(xiàn)將Excel的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)

    在開發(fā)中,我們經(jīng)常會(huì)遇到這樣的需求,將Excel的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)中,這篇文章主要來(lái)和大家講講Java如何使用雙異步實(shí)現(xiàn)將Excel的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),感興趣的可以了解下
    2024-01-01
  • java 重定義數(shù)組的實(shí)現(xiàn)方法(與VB的ReDim相像)

    java 重定義數(shù)組的實(shí)現(xiàn)方法(與VB的ReDim相像)

    java 重定義數(shù)組的實(shí)現(xiàn)方法(與VB的ReDim相像),需要的朋友可以參考一下
    2013-04-04

最新評(píng)論

巴彦县| 乌兰察布市| 云龙县| 玛多县| 阿图什市| 沂源县| 石狮市| 南召县| 贡嘎县| 荥经县| 邓州市| 满城县| 福建省| 页游| 金堂县| 柘荣县| 青阳县| 赤壁市| 普陀区| 江川县| 乌拉特中旗| 东乡族自治县| 永昌县| 福州市| 治多县| 灵璧县| 格尔木市| 怀集县| 扶余县| 保康县| 宁强县| 天祝| 胶州市| 历史| 新津县| 蓬溪县| 都兰县| 姜堰市| 清流县| 石首市| 三门峡市|