在SpringBoot中,使用jasypt
依赖实现配置文件加密。记录了Hikari
与Druid
连接池的使用方法,配置文件中使用ENC(xx)
方式,extends HikariDataSource
的两种方式实现
SpringBoot 配置加密的数据库连接信息
使用Hikari
数据库连接池
application.yml
配置文件(根据自身实际情况调整配置内容及配置文件格式properties
)
1 | spring: |
- 两种方式都需要导入
jasypt
依赖,导入配置后需要在配置文件中添加jasypt.encryptor.password
属性
添加依赖
1
2
3
4
5<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>使用
jasypt
包中的依赖,生成加密后的字符串- 这里是在测试类中生成的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private StringEncryptor encryptor;
public void generatorEncryptProperties() {
/* 生成加密的数据库配置信息 */
// dev
String jdbcUrlDev = "jdbc:oracle:thin:@//127.0.0.1:1521/db";
jdbcUrlDev = encryptor.encrypt(jdbcUrlDev);
String userNameDev = "test";
userNameDev = encryptor.encrypt(userNameDev);
String passwordDev = "test";
passwordDev = encryptor.encrypt(passwordDev);
log.info("jdbcUrlDev:{}", jdbcUrlDev);
log.info("userNameDev:{}", userNameDev);
log.info("passwordDev:{}", passwordDev);
// prod
String jdbcUrlPro = "jdbc:oracle:thin:@//ip:1521/db";
jdbcUrlPro = encryptor.encrypt(jdbcUrlPro);
String userNamePro = "test";
userNamePro = encryptor.encrypt(userNamePro);
String passwordPro = "test";
passwordPro = encryptor.encrypt(passwordPro);
log.info("jdbcUrlPro:{}", jdbcUrlPro);
log.info("userNamePro:{}", userNamePro);
log.info("passwordPro:{}", passwordPro);
}
第一种(以上步骤是相同的,以下步骤开始区分)
- 修改配置文件
- 配置文件中使用密文替换原先配置
ENC(xx)
1 | spring: |
- 这是上述配置中
DataSource
配置
1 | import javax.sql.DataSource; |
- 创建测试类,测试程序是否能够获取数据库连接
1 | import java.util.HashMap; |
- 控制台输出,以下是正常时的内容
1 | secondary data source connection start: |
第二种
- 新建
JasyptHikariDataSource
- 注释的属性可以根据实际情况进行调整,选择自己需要加密的属性重写相关方法
1 | import com.zaxxer.hikari.HikariDataSource; |
- 修改
HikariDataSource
中的数据源配置
1 | import javax.sql.DataSource; |
- 创建测试类,测试程序是否能够获取数据库连接
1 | import java.util.HashMap; |
- 运行正常即可
使用Druid
数据库连接池(项目连接的是Oracle
数据库,其他数据库看实际情况修改导入的连接依赖即可)
修改
pom.xml
添加依赖1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25<!-- 数据库连接池 -->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 本地连接oracle的文件 -->
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>${ojdbc.version}</version>
</dependency>
<!-- jasypt 加密依赖 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>