Druid数据源加密

因明文密码不能出现在项目配置文件,需对数据库密码加密。项目采用Druid数据源,加密方式为复写DruidDataSource中的setUserbane和setPassword方法,对username和password加密,配置mybatis-config.xml时,将class配置成自己的SecurityDataSource ,并使用加密后的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于明文密码不能出现在项目配置文件中,因此需要对数据库的密码进行加密。 项目采用的druid数据源,加密方式如下:
(1)首先复写DruidDataSource中的setUserbane和setPassword方法

import com.alibaba.druid.filter.config.ConfigTools;
import com.alibaba.druid.pool.DruidDataSource;

public class SecurityDataSource extends DruidDataSource
{
    @Override
    public void setUsername(String username)
    {
        try
        {
            username = ConfigTools.decrypt(username);

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        super.setUsername(username);
    }

    @Override
    public void setPassword(String password)
    {
        try
        {
            password = ConfigTools.decrypt(password);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        super.setPassword(password);
    }
}

(2)将username和password加密,如下test1和test2:

public static void main(String[] args) throws Exception
    {
        String test1 =  ConfigTools.encrypt("test1");
        String test2 =  ConfigTools.encrypt("test2");
    }

(3) 配置mybatis-config.xml时,将class配置成自己的SecurityDataSource ,将properties中username和password写成加密后的即可。

<bean id="dataSource" class="SecurityDataSource"  init-method="init" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="dbType" value="${dbType}"></property>
        <property name="url" value="${url}" />
        <property name="username" value="${加密后username}" />
        <property name="password" value="${j加密后password}" />
        <property name="driverClassName" value="${driverClassName}" />
        <property name="filters" value="${filters}" />
        <!-- 最大并发连接数 -->
        <property name="maxActive" value="${maxActive}" />
        <!-- 初始化连接数量 -->
        <property name="initialSize" value="${initialSize}" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${maxWait}" />
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="${minIdle}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
        <property name="validationQuery" value="${validationQuery}" />
        <property name="testWhileIdle" value="${testWhileIdle}" />
        <property name="testOnBorrow" value="${testOnBorrow}" />
        <property name="testOnReturn" value="${testOnReturn}" />
        <!--
        <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" />
         -->
        <!-- 打开removeAbandoned功能 -->
        <property name="removeAbandoned" value="${removeAbandoned}" />
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="${logAbandoned}" />
    </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值