【Spring】基于c3p0连接池,实现数据库加解密连接MySQL数据库

1、spring连接数据库的xml设置如下:

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="properties">
            <bean class="com.asiainfo.yuntie.util.DatasourcePropertiesFactory" factory-method="getProperties">
                <constructor-arg type="java.lang.String">
                    <value>${jdbc.password}</value>
                </constructor-arg>
            </bean>
        </property>

        <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>

        <!-- c3p0连接池的私有属性 -->
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
        <!-- 关闭连接后不自动commit -->
        <property name="autoCommitOnClose" value="false"/>
        <!-- 获取连接超时时间 -->
        <property name="checkoutTimeout" value="1000"/>
        <!-- 当获取连接失败重试次数 -->
        <property name="acquireRetryAttempts" value="2"/>
        <!--每5小时检查所有连接池中的空闲连接。防止mysql wait_timeout(默认的为8小时) --> 
        <property name="idleConnectionTestPeriod" value="18000"/>
    </bean>

这里写图片描述

    (1)解密类的完全限定名;
    (2)解密方法;
    (3)properties文件中对应的key;
     余下设置针对不同需求自己定制即可。

2、加解密类:

public class DatasourcePropertiesFactory {
    private static final String PROP_PASSWORD = "password";

    private static final Log logger = LogFactory.getLog(DatasourcePropertiesFactory.class);

    /**
     * 
     * @Title: getProperties   
     * @Description: 获取数据库密码
     * @param: @param password
     * @param: @return
     * @param: @throws Exception     
     * @return: Properties    
     * @author tanglei 
     * @throws
     */
    public static Properties getProperties(String password) throws Exception {
        Properties properties = new Properties();
            try {
                //解密密码
                properties.setProperty(PROP_PASSWORD, EncryptAndDecrypt.Decrypt(password));
            } catch (Exception e) {
                logger.error("DatasourcePropertiesFactory getProperties is error!", e);
            }

        return properties;
    }
}
这里的 EncryptAndDecrypt.Decrypt(password) 就是我所用的加解密方法,由于安全问题这里就不公开这个类里面的具体方法,找一个或者自己写一个都可以,只要保证可以正常加解密即可。

3、db.properties文件设置:

这里写图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值