將配置文件中的密碼進行加密使其以密文方式存在,在初始化鏈接池時進行解密操做,達到成功建立鏈接池的目的。java
目前主要使用的鏈接池有如下幾個:mysql
編寫DatasourcePropertiesFactory類git
public class DatasourcePropertiesFactory { private static final String PASSWORD_PROPERTY = "password"; public static Properties getProperties(String password) throws Exception { Properties properties = new Properties(); try { /** * 這裏對參數password進行解密獲得解密後的密碼 */ String decodePassword = 解密(password) properties.setProperty(PASSWORD_PROPERTY, decodePassword); } catch (Exception e) { //處理異常 } return properties; } }
修改spring.xml中數據源datasource的配置,爲ComboPooledDataSource配置名爲properties的屬性,同時取消password的property配置項github
<property name="properties"> <bean class="com.xxx.datasource.CustomDatasourcePropertiesFactory" factory-method="getProperties"> <constructor-arg type="java.lang.String"> <value>${jdbc.password}</value> </constructor-arg> </bean> </property>
druid鏈接池默認使用RSA加密鏈接,修改解密算法比較麻煩,建議直接使用druid提供的工具進行加解密算法
java -cp druid-1.0.31.jar com.alibaba.druid.filter.config.ConfigTools your_password
<!-- config.decrypt=true --> <property name="filters" value="config" /> <property name="connectionProperties" value="config.decrypt=true" />
能夠參考官網信息【官網】https://github.com/alibaba/druid/wiki/使用ConfigFilterspring
springboot引入jasypt進行加解密操做,默認加密算法是PBEWithMD5AndDES,一種結合PBE,MD5和DES的複合加密算法sql
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
jasypt: encryptor: password: 123456這個密鑰由運維提供
@Autowired StringEncryptor stringEncryptor; @Test public void encryptPwd() { String result = stringEncryptor.encrypt("yourpassword"); System.out.println(result); }
spring: datasource: url: jdbc:mysql://192.168.171.231:3306/eoc?characterEncoding=utf8&useUnicode=true username: test password: ENC(括號裏面填上面獲取到的加密密文)