Druid连接池自定义数据库密码加解密的实现
2016-11-30 18:12
387 查看
1、首先配置Druid的数据库连接池
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 引入jdbc配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:jdbc.properties</value> </list> </property> </bean> <!--数据源加密操作 --> <bean id="dbPasswordCallback" class="com.waukeen.util.DBPasswordCallback" lazy-init="true" /> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close" lazy-init="true"> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="driverClassName" value="${driver}" /> <property name="initialSize" value="${initialSize}" /> <property name="maxActive" value="${maxActive}" /> <property name="maxWait" value="${maxWait}" /> <property name="filters" value="stat" /> <property name="connectionProperties" value="password=${password}" /> <property name="passwordCallback" ref="dbPasswordCallback" /> </bean> </beans>
2、创建DruidPasswordCallback子类
创建DBPasswordCallback类继承DruidPasswordCallback,并重写setProperties方法
package com.waukeen.util; import java.util.Properties; import com.alibaba.druid.util.DruidPasswordCallback; import com.waukeen.security.Encode; /** * 数据库回调密码解密 * * @author * */ @SuppressWarnings("serial") public class DBPasswordCallback extends DruidPasswordCallback { public void setProperties(Properties properties) { super.setProperties(properties); String password = properties.getProperty("password"); if (!Tools.isEmpty(password)) { // 解密数据库连接密码 String pwd = Encode.decode(password); setPassword(pwd.toCharArray()); } } public static void main(String[] args) { // 生成加密后的密码,放到jdbc.properties String pwd = Encode.encode("pwd"); System.out.println(pwd); } }
3、jdbc.properties的内容
#数据库连接地址 url=jdbc:mysql://127.0.0.1:3306/test #用户名 username=root #密码,这里的密码是你加密之后的密码!!! password=XXXXX #数据库连接驱动类 driver=com.mysql.jdbc.Driver #定义初始连接数 initialSize=10 #定义最大连接数 maxActive=12 #定义最长等待时间 maxWait=5000
4、需要注意的地方
<!--数据源加密操作 --> <bean id="dbPasswordCallback" class="com.waukeen.util.DBPasswordCallback" lazy-init="true" /> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close" lazy-init="true"> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="driverClassName" value="${driver}" /> <property name="initialSize" value="${initialSize}" /> <property name="maxActive" value="${maxActive}" /> <property name="maxWait" value="${maxWait}" /> <property name="filters" value="stat" /> <!--传递password加密后的值到DBPasswordCallback,不能遗漏 --> <property name="connectionProperties" value="password=${password}" /> <property name="passwordCallback" ref="dbPasswordCallback" /> </bean>
相关文章推荐
- Druid连接池自定义数据库密码加解密的实现
- Druid连接池自定义数据库密码加解密的实现
- Druid连接池自定义数据库密码加解密的实现
- Druid连接池自定义数据库密码加解密的实现
- Druid连接池自定义数据库密码加解密的实现
- MyBatis多数据源配置实现读写分离 发表于 2017-09-29 | 分类于 Database | 常见的数据库连接池有C3P0、DBCP和阿里巴巴的druid,后两个在实际场景中用的比较多
- [数据库--druid连接池实现]--Java版本
- 如何实现Tomcat连接池数据库密码加密
- 如何实现Tomcat连接池数据库密码加密
- Jfinal+Druid实现数据库密码加密部署
- 使用Druid加解密数据库密码
- Druid实现数据库连接用户密码加密
- druid对数据库连接密码加密和解密
- druid数据库账号密码加密解密
- Druid实现数据库连接用户密码加密
- Druid 数据库用户密码加密 代码实现
- 【Spring】基于c3p0连接池,实现数据库加解密连接MySQL数据库
- druid实现数据库连接池
- Druid实现数据库连接用户密码加密
- Druid 数据库用户密码加密 代码实现