一、繼承並實現自己的屬性文件配置器類 二、Spring中配置以自定義的屬性文件配置器類來載入加密後的配置文件 三、將配置文件中的特殊屬性用相同的演算法和密鑰加密 ...
一、繼承並實現自己的屬性文件配置器類
/** * 帶加密的Spring屬性配置文件擴展類 * 加密方式:AES * @author simon * */ public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { //指定需要加密的屬性 private String[] propertyNames = {"db.password"}; /** * 解密指定propertyName的屬性值 * @param propertyName * @param propertyValue * @return */ @Override protected String convertProperty(String propertyName, String propertyValue) { //過濾出需要解密的屬性 for (String p : propertyNames) { if (p.equalsIgnoreCase(propertyName)) { try { //返回AES解密後的字元串 return new String(SymmetricCryptoUtil.decryptAESWithDefaultKey(EncodeUtil.decodeBase64(propertyValue))); } catch (Exception e) { e.printStackTrace(); } } } return super.convertProperty(propertyName, propertyValue); } }
二、Spring中配置以自定義的屬性文件配置器類來載入加密後的配置文件
<!-- 載入加密後的配置文件 --> <bean class="com.bounter.mybatis.extension.EncryptPropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:db.properties</value> </list> </property> </bean>
三、將配置文件中的特殊屬性用相同的演算法和密鑰加密
db.driver= db.url= db.username=root #AES encrypt,Base64 encode db.password=jFYmt2f57RHhzItYDhWiSA==