背景:出于对项目安全方面的考虑,要求对properties中的有关数据库连接信息加密。本例中用了BASE64加密
首先:将数据库密码用BASE64加密,获得加密后的密文,比如”bG92ZTQzMQT==”,将该字符串写到properties相应位置。比如:#连接池通用url配置 jdbc.url=jdbc:oracle:thin:@192.168.0.25:1521:orcl jdbc.username=CROSS_INFO_BASE jdbc.password=<第二步:重写PropertyPlaceholderConfigurer类>
public class EncryptedPlaceholderConfigurer extends PropertyPlaceholderConfigurer{ public static final String PREFIX = "<<"; @Override protected String convertPropertyValue(String originalValue) { if (originalValue.startsWith(PREFIX)) { logger.debug("Find encrypted value:" + originalValue); String jmStr=originalValue.substring(2,originalValue.length()-2); //解密 String newValue =Base64.getFromBase64(jmStr); return newValue; } return originalValue; } }最后:修改spring配置文件即可。
classpath*:config/jdbc.properties classpath*:config/hibernate.properties classpath*:config/redis.properties