mybatis plus多数据源druid加密
配置
Mybatis plus加druid配置如下
spring:
application:
name: mybatis-plus-demo
#配置数据源
datasource:
dynamic:
#设置默认数据源
primary: henry_db
strict: false
datasource:
henry_db:
url: your url
username: your username
password: 加密的password
driver-class-name: com.mysql.cj.jdbc.Driver
# druid设置
druid:
publicKey: 公钥
db2:
url: db2 url
username: db2 useranme
password: db2 password
driver-class-name: com.mysql.jdbc.Driver
# 公共druid设置
druid:
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select '1'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
另外,使用Mybatis Plus多数据源还需要在springboot启动类上排除默认的DruidDataSourceAutoConfigure,不然会启动报错
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
按照以上配置再配合注解@DS就可以使用多数据源了
密码加密
按照druid官方文档的方式,找到druid jar包所在位置(可以去自己本地maven仓库中找),找到后输入如下命令(其实就是调用他写好的java方法拿到加密后的密码)
java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools you_password
稍等一会会得到一串加密文字
- privateKey 私钥
- publicKey 公钥
- password 加密后的密码
druid配置密码处填写加密后的密码,publicKey处填写公钥即可
如果直接按照官方提供的配置属性配置不使用mybatis,可以做如下配置
spring:
application:
name: mybatis-plus-demo
#配置数据源
datasource:
url: your url
username: your username
password: 加密后密码
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select '1'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
connection-properties: config.decrypt=true;config.decrypt.key=这里输入公钥
filter:
config:
enabled: true
默认需要配置的是connection-properties和filter属性
为什么Mybatis Plus只需要配置一个publicKey就可以了呢?
因为Mybatis Plus对druid配置做了封装
com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig类中toProperties方法中可以看到两端代码
if (publicKey != null && publicKey.length() > 0 && !tempFilters.contains("config")) {
tempFilters += ",config";
}
properties.setProperty("druid.filters", tempFilters);
if (publicKey != null && publicKey.length() > 0) {
if (tempConnectProperties == null) {
tempConnectProperties = new Properties();
}
log.info("动态数据源-检测到您配置了druid加密,加密所需连接参数已为您自动配置");
tempConnectProperties.setProperty("config.decrypt", "true");
tempConnectProperties.setProperty("config.decrypt.key", publicKey);
}
通过上面两端代码可以看到,Mybatis Plus做了一次封装,使用起来配置更简单一点,但是其原理也是基于druid配置实现的,该类也封装了很多druid属性,大多名称都和druid本身配置属性保持一致。
|