Springboot整合Hikari数据库连接池,密码加密
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Springboot整合Hikari数据库连接池,密码加密1.application.yml配置
1 spring:
2 datasource:
3 jdbcUrl: jdbc:mysql://127.0.0.1:3306/jby?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
4 username: root
5 password: 'f687101570bae7ce4d313c2b4440f4ae'
6 #⾃动提交
7 auto-commit: true
8 #最⼩连接
9 minimum-idle: 100
10 #最⼤连接
11 maximum-pool-size: 200
12 #最⼤空闲时间
13 idle-timeout: 60000
14 #连接池名
15 pool-name: DatebookHikariCP
16 #最⼤⽣命周期
17 max-lifetime: 900000
18 #连接超时时间
19 connection-timeout: 15000
20 #⼼跳检测
21 connection-test-query: SELECT 'x' FROM DUAL
2. 构建UmspscDataSource类,继承HikariDataSource类
1 @Slf4j
2public class UmspscDataSource extends HikariDataSource {
3private String passwordDis;
4/**
5 * 密匙
6*/
7private final static String PKEY ="1234565437892132";
8 @Override
9public String getPassword(){
10
11if(StringUtils.isNotBlank(passwordDis)){return passwordDis;}
12 String encPassword = super.getPassword();
13if(null==encPassword){
14return null;
15 }
16 ("数据库密码加解密,{"+encPassword+"}");
17try{
18// 密⽂解密,解密⽅法可以修改
19 String key = HexUtil.encodeHexStr(PKEY);
20 SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key.getBytes());
21 passwordDis = aes.decryptStr(encPassword, CharsetUtil.CHARSET_UTF_8);
22return passwordDis;
23 }catch (Exception e){
24 log.error("数据库密码解密出错,{"+encPassword+"}");
25 log.error(LogUtil.e(e));
26throw new AppException("数据库密码解密失败!", e);
27 }
28 }
29 }
3.初始化DataSource类
1 @Component
2public class CommonBeanFactory {
3
4 @Bean(name = "dataSource", autowire = Autowire.NO)
5 @Primary
6 @ConfigurationProperties(ignoreUnknownFields = false,prefix="spring.datasource")
7public HikariDataSource dataSource() {
8 HikariDataSource druidDataSource = new UmspscDataSource();
9return druidDataSource;
10 }
11 }
*******************************
构建密⽂
1 @Slf4j
2public class Main {
3
4public static void main(String[] args) {
5//明⽂
6 String content = "123456";
7//密匙
8 String pkey = "1234565437892132";
9 ("密匙:" + pkey);
10 String key = HexUtil.encodeHexStr(pkey);
11//构建
12 SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key.getBytes()); 13
14//加密为16进制表⽰
15 String encryptHex = aes.encryptHex(content);
16 ("密⽂:" + encryptHex);
17//解密为字符串
18 String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
19 ("明⽂:" + decryptStr);
20 }
21 }。