您的位置:首页 > 编程语言 > Java开发

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

2017-04-12 15:30 477 查看
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文件设置:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息