spring boot和jpa整合,使用druid作为连接池,在单数据源时加密比较容易,但是多数据源时加密遇到问题,搜索了几个博文
https://blog.csdn.net/ooobama/article/details/80752223
文中给到了解决方案,就是手动解密。
该博文已经明确了解决方案,这里不在重复,但是博文没有说清楚多数据源的配置和配置文件的详情,我这里把我跑成功的贴一下。

package com.***;import com.alibaba.druid.pool.DruidDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.sql.DataSource;/*** Created by chenglong on 2018-12-26 13:58*/
@Configuration
public class DataSourceConfig {private static final Logger logger = LoggerFactory.getLogger(DataSourceConfig.class);@Value("${spring.datasource.primary.jdbc-url}")private String dbUrl;@Value("${spring.datasource.primary.username}")private String username;@Value("${spring.datasource.primary.password}")private String password;@Value("${spring.datasource.primary.driver-class-name}")private String driverClassName;@Value("${spring.datasource.secondary.jdbc-url}")private String dbUrl2;@Value("${spring.datasource.secondary.username}")private String username2;@Value("${spring.datasource.secondary.password}")private String password2;@Value("${spring.datasource.secondary.driver-class-name}")private String driverClassName2;@Value("${spring.datasource.primary.type}")private String dbType;@Value("${spring.druid.initial-size}")private int initialSize;@Value("${spring.druid.min-idle}")private int minIdle;@Value("${spring.druid.max-active}")private int maxActive;@Value("${spring.druid.max-wait}")private int maxWait;@Value("${spring.druid.time-between-eviction-runs-millis}")private int timeBetweenEvictionRunsMillis;@Value("${spring.druid.min-evictable-idle-time-millis}")private int minEvictableIdleTimeMillis;@Value("${spring.druid.validation-query}")private String validationQuery;@Value("${spring.druid.test-while-idle}")private boolean testWhileIdle;@Value("${spring.druid.test-on-borrow}")private boolean testOnBorrow;@Value("${spring.druid.test-on-return}")private boolean testOnReturn;@Value("${spring.druid.pool-prepared-statements}")private boolean poolPreparedStatements;@Value("${spring.druid.max-pool-prepared-statement-per-connection-size}")private int maxPoolPreparedStatementPerConnectionSize;@Value("${spring.datasource.primary.connection-properties}")private String connectionProperties;@Value("${spring.datasource.secondary.connection-properties}")private String connectionProperties2;@Value("${spring.druid.password-callback}")private String passwordCallbackClassName;@Bean(name = "primaryDataSource")@Primary@ConfigurationProperties(prefix="spring.datasource.primary")public DataSource primaryDataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(dbUrl);datasource.setUsername(username);datasource.setPassword(password);datasource.setDriverClassName(driverClassName);datasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);datasource.setConnectionProperties(connectionProperties);datasource.setDbType(dbType);try {datasource.setPasswordCallbackClassName(passwordCallbackClassName);} catch (Exception e) {logger.error("druid configuration initialization passwordCallbackClassName", e);}return datasource;}@Bean(name = "secondaryDataSource")@ConfigurationProperties(prefix="spring.datasource.secondary")public DataSource secondaryDataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(dbUrl2);datasource.setUsername(username2);datasource.setPassword(password2);datasource.setDriverClassName(driverClassName2);datasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);datasource.setDbType(dbType);datasource.setConnectionProperties(connectionProperties);try {datasource.setPasswordCallbackClassName(passwordCallbackClassName);} catch (Exception e) {logger.error("druid configuration initialization passwordCallbackClassName", e);}return datasource;}
}

application.yml配置文件

spring:datasource:#本地数据库primary:driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcejdbc-url: jdbc:mysql://***/***?characterEncoding=utf8&useSSL=falseusername: ***password: G0jxH***auCnXwjsEHZX4ueA41C4KA==# 配置 connection-properties,启用加密,配置公钥。connection-properties: config.decrypt=true;publickey=${spring.datasource.primary.publickey};password=${spring.datasource.primary.password}# 公钥publickey: MFwwDQYJ***RxcJ1Ch77tBggspntMwQgTyVRgMU/Z2NAMBN0wM1x1Ux+T/Pqxsu9ra++GgbM910CAwEAAQ==#外部数据库secondary:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://***/***?characterEncoding=utf8&useSSL=falseusername: ***password: VJa9HBxSKFKM6z3cUg+GmD***7xCHrBx+IHKtb3DQpZRMHism6NBRLMP99nfu/A==type: com.alibaba.druid.pool.DruidDataSource# 配置 connection-properties,启用加密,配置公钥。connection-properties: config.decrypt=true;publickey=${spring.datasource.secondary.publickey};password=${spring.datasource.secondary.password}# 公钥publickey: MFwwDQYJKo******WbG2nyHEqv5Txpegdu6B9e6VuvTU6Qy8fE0C***+95oHED028CAwEAAQ==druid:initial-size: 2max-active: 15min-idle: 2max-wait: 1234pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 5validation-query: select 1 from dualvalidation-query-timeout: 1test-on-borrow: truetest-on-return: truetest-while-idle: truetime-between-eviction-runs-millis: 10000min-evictable-idle-time-millis: 30001async-close-connection-enable: truefilter:stat:db-type: h2log-slow-sql: trueslow-sql-millis: 2000# 启动ConfigFilterconfig:enabled: truepassword-callback: com.***.data.common.utils.DbPasswordCallbackjpa:database: MYSQLshow-sql: truehibernate:ddl-auto: updatenaming:implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategyproperties:hibernate:dialect: org.hibernate.dialect.MySQL5Dialect

spring boot+jpa+druid 多数据源+多数据源的密码加密相关推荐

  1. Spring Boot + MyBatis + Druid + PageHelper 实现多数据源并分页

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 虚无境 链接 | cnblogs.com/xuwujin ...

  2. 学习Spring Boot:(十四)spring-shiro的密码加密

    前言 前面配置了怎么使用 shiro ,这次研究下怎么使用spring shiro的密码加密,并且需要在新增.更新用户的时候,实现生成盐,加密后的密码进行入库操作. 正文 配置凭证匹配器 @Beanp ...

  3. Spring Boot 集成 Druid 监控数据源

    关注"Java后端技术全栈" 回复"面试"获取全套大厂面试资料 Druid 介绍 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和 ...

  4. Spring Boot Jpa 配置多个数据源,并读取其中一个表的具体数据

    总体简介: Spring Boot Jpa配置多个数据源(此次两个mysql数据库),访问其中一个库 alime_counsel_assign_log下的assign_data_backflow表,实 ...

  5. Spring Boot使用spring-data-jpa配置Mysql多数据源

    转载请注明出处 :Spring Boot使用spring-data-jpa配置Mysql多数据源 我们在之前的文章中已经学习了Spring Boot中使用mysql数据库 在单数据源的情况下,Spri ...

  6. Spring boot 加Mybatis加dubble多数据源配置

    Spring boot 整合Mybatis+dubble +maven单数据源的例子很多,但是多数据源配置需要将原本封装好的重写一遍,有点麻烦,对框架的理解要求比较高, 在这详细给大家介绍下如何配置使 ...

  7. Spring Boot 中使用 Hikari连接各类数据源

    Spring Boot 中使用 Hikari连接各类数据源 1,连接hive集群 HikariConfig中各属性设置 {"allowPoolSuspension": false, ...

  8. Spring Boot下Druid连接池的使用配置分析

    引言: 在Spring Boot下默认提供了若干种可用的连接池,Druid来自于阿里系的一个开源连接池,在连接池之外,还提供了非常优秀的监控功能,这里讲解如何与Spring Boot实现集成. 1.  ...

  9. spring boot配置druid(德鲁伊)

    spring boot配置druid(德鲁伊) 关于druid的介绍请看 阿里巴巴温少访谈 1.引入相关依赖,全部依赖是上一篇spring boot+mybatis依赖的基础上,再加上下边的依赖,如下 ...

最新文章

  1. kafka 监控(eagle)
  2. 【转】后勤常用查询报告
  3. Spark常规性能调优三:并行度调节
  4. udl 连mysql_自己如何正确获取MYSQL的ADO连接字符串
  5. MapReduce:Job性能调优总结
  6. 为DbHelper工具类添加关闭资源的方法 jdbc 20210412_212728.mp4
  7. 圣诞海报模板|给设计师点灵感
  8. .iOS APP Project or Mac APP Project编译错误提示: My Mac 64-bit is not valid for Running the scheme...
  9. mmap文件做成html,mmap()映射到文件的一些总结
  10. 实用主义学python百度网盘_麻瓜编程:实用主义学Python(5套全)(火评)
  11. 爱普生传真服务器网页,爱普生传真机如何发传真 爱普生传真机快速发传真技巧【详解】...
  12. 详细分析MOS管缓启动电路及其原理详解
  13. MAE平均绝对误差和MSE均方误差
  14. linux 编辑文件出现E45readonly option is set (add! to .....)
  15. html embed如何禁止自动播放,html embed用法
  16. flash builder 找不到所需要的AdobeFlashPlayer调试器版本
  17. 基础复习——TextView——文本显示——字体颜色——背景颜色——字体大小——@color/teal_200——@string/hello...
  18. 光速入门MyBatis-Plus
  19. QLabel设置字体颜色
  20. 前端对用户身份证号码进行验证以及模糊显示

热门文章

  1. Linux 查看查找文件
  2. PKPM学习:板生成的问题
  3. Java中如何使用帮助文档(API)
  4. 【Java】文如何制作帮助文档
  5. 网上书城源代码java_javaweb网上书城源码(包含数据库) 一个web课设——基于JSP的网上书城 - 下载 - 搜珍网...
  6. 谈谈javascript中的多线程
  7. java,jbutton
  8. Dubbo (二) ---------- Dubbo 框架
  9. cmd命令行中文显示乱码解决办法
  10. 机器学习(四)——逻辑斯蒂回归(Logistic Regression)