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

来源:互联网 发布:js怎么判断是不是数组 编辑:程序博客网 时间:2024/06/06 03:17

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文件设置:

这里写图片描述

0 0