pom.xml引入依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
注意修改成自己的密码
@Configuration
public class EncryptablePropertyResolverConfig implements EncryptablePropertyResolver {
private static final String PASSWORD = "Test@2024";
private static final BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
static {
textEncryptor.setPassword(PASSWORD);
}
@Bean(name = "encryptablePropertyResolver")
public EncryptablePropertyResolver encryptablePropertyResolver() {
return new EncryptablePropertyResolverConfig();
}
@Override
public String resolvePropertyValue(String value) {
if (StringUtils.isBlank(value)) {
return value;
}
// 以ENC(开头的,需要解密
if (value.trim().startsWith("ENC(")) {
value = value.trim().substring(4, value.trim().length() - 1);
value = decrypt(value);
}
// 不需要解密的值直接返回
return value;
}
//解密
private String decrypt(String value) {
try {
return textEncryptor.decrypt(value);
} catch (Exception e) {
// e.printStackTrace();
}
return value;
}
//加密
public static String encrypt(String value) {
try {
return textEncryptor.encrypt(value);
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
}
新建一个测试类生成加密字符串
public static void main(String[] args) {
// 加密
String encrypt = EncryptablePropertyResolverConfig.encrypt("xxxxx");
System.out.println(encrypt);
}
把刚main方法中加密出来的字符串替换原来的,注意一定要用ENC()把字符串包住才行。
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@192.168.100.123:7029:base
spring.datasource.username=root
spring.datasource.password=ENC(加密出来)