SPRING 数据库密码加密存储 在配置文件的两种方式 第一种

简介: SPRING 数据库密码加密存储 在配置文件的两种方式 第一种

package com.spring.demo.utils;

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class DecryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
    @Override
    protected String convertProperty(String propertyName, String propertyValue)
    {
        //如果在加密属性名单中发现该属性
        if (isEncryptProp(propertyName))
        {
            String decryptValue =AesUtils.decrypt(propertyValue,AesUtils.key);
            System.out.println(decryptValue);
            return decryptValue;
        }else {
            return propertyValue;
        }

    }

    private boolean isEncryptProp(String propertyName)
    {
       if (propertyName.startsWith("encrypt")){
           return true;
       }
        return false;
    }

    public  void setLocation(Resource location) {
        String locationStr = location.toString();
        if (locationStr == null || locationStr.equals("")){
            return;
        }
        int start = locationStr.indexOf("[");
        int end = locationStr.indexOf("]");
        if (start < 0 || end < 0 || end <= start+1){
            return;
        }
        String locStr = locationStr.substring(start+1,end);
        String[] paths = locStr.split(",");
        List<Resource> list = new ArrayList<>();
        for (int i = 0; i < paths.length; i++) {
            String loc = paths[i];
            if (loc == null || loc.equals("")){
                continue;
            }
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            //将加载多个绝对匹配的所有Resource
            //然后进行遍历模式匹配
            try {
                Resource[] resources=resolver.getResources(loc);
                list.addAll(Arrays.asList(resources));
            } catch (IOException e) {
                continue;
            }
        }
        this.setLocations(list.toArray(new Resource[list.size()]));

    }
}


<bean id="decryptPropertyPlaceholderConfigurer"
          class="com.spring.demo.utils.DecryptPropertyPlaceholderConfigurer"
          p:location="classpath*:*.properties,classpath*:loc/*.properties">
    </bean>


目录
相关文章
|
3天前
|
存储 负载均衡 监控
关系型数据库搭建高可用存储集群
关系型数据库搭建高可用存储集群
18 4
|
1天前
|
算法 数据库 数据安全/隐私保护
rsa加密解密,使用rsa对密码加密
rsa加密解密,使用rsa对密码加密
|
2天前
|
SQL 数据库 数据安全/隐私保护
修改SAP数据库用户密码的参考
修改SAP数据库用户密码的参考
|
3天前
|
安全 Java 数据库连接
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
|
11天前
|
存储 SQL 关系型数据库
存储系统、数据库和对象存储 | 青训营
存储系统、数据库和对象存储 | 青训营
|
16天前
|
存储 SQL 关系型数据库
关系型数据库存储优化
关系型数据库存储优化
23 1
|
16天前
|
存储 人工智能 安全
|
17天前
|
安全 关系型数据库 MySQL
QL数据库root账户密码忘记两种处理方法(保有效)
QL数据库root账户密码忘记两种处理方法(保有效)
|
22天前
|
存储 SQL 数据库
C# 将 Word 转文本存储到数据库并进行管理
C# 将 Word 转文本存储到数据库并进行管理
|
24天前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
25 1