最近在重构一个架构,因为项目是对接手机端应用,所以选用了springboot ,但是想到配置文件中的地址不可以暴露在服务器上的
参考博客https://blog.csdn.net/sz85850597/article/details/80396321
引入依赖
<!--jasypt 配置文件数据加密依赖-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
因为配置文件
@Configuration
public class EncryptionPropertyConfig {
@Bean(name="encryptablePropertyResolver")
public EncryptablePropertyResolver encryptablePropertyResolver() {
return new EncryptionPropertyResolver();
}
class EncryptionPropertyResolver implements EncryptablePropertyResolver {
@Override
public String resolvePropertyValue(String value) {
if(StringUtils.isBlank(value)) {
return value;
}
// 值以DES@开头的均为DES加密,需要解密
if(value.startsWith("xxxxx@")) {
return resolveDESValue(value.substring(11));
}
// 不需要解密的值直接返回
return value;
}
private String resolveDESValue(String value) {
// 自定义DES密文解密
String decode="";
try{
decode = DESCode.decode(value);
}catch (Exception e){
e.printStackTrace();
System.out.println("解密失败!:"+ value);
}
System.out.println("value :"+value +" :"+decode);
return decode;
}
}
}
我再配置文件中用到的是DESC 加密方式,所以呢,你可以配置自己的解密方式进行解密
你也可以自己定义配置文件能的加密好的字符串的开头形式
把你自己加密好的串放到配置文件当中就可以了(如图例子),启动项目会自动读取进行解密并配置,无需其他操作
完!