Druid passwordcallback失效
Druid passwordcallback失效
springboot利用druid连接池做数据库密码加密
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</ artifactId>
<version>1.1.21</version>
</ dependency>
配置如下:
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
druid:
connectionProperties: password=加密后的密码 #自定义加密方式
passwordCallbackClassName: com.sgcc.psr.DBPasswordCallback #回调类的路径
回调类DBPasswordCallback 代码如下:
/** *需要继承DruidPasswordCallback 并重写setProperties 方法 **/
public class DBPasswordCallback extends DruidPasswordCallback {
@Override
public void setProperties(Properties properties) {
super.setProperties(properties);
//获取配置文件中加密后的密码,和xml中的connectionProperties属性配置相关
String password = (String) properties.get("password");
try {
//解密过程,ConfigTools为druid自带,提供一些好用的函数
String dbpassword= ConfigTools.decrypt(publicKey,password);
//设置密码
setPassword(dbpassword.toCharArray());
}catch (Exception e){
e.printStackTrace();
}
}
}
启动失败,报错提示密码错误。
猜想是密码解密失败,进入到druid.jar断点调试,发现没有进入druidDatasource中的passwordCallback方法。
解决办法:
换成springboot集成的druid依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</ artifactId>
<version>1.1.21</version>
</ dependency>