直接重寫BasicDataSource接口的setPassword方法;
這里同樣存在一個問題,就是在重寫的方法中,我們可以對password,username
進行解密處理,但是不能根據database.properties中的字段jdbc.isencoder值來判斷
是否需要解密。
采用EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer的方式
具體入參考文章3,在擴展的類中進行解密操作,然后其他的操作與mybatis連接mysql中相同
但是在實現的過程中發現一個問題:就是在.properties文件中設置一個字段jdbc.isencoder = 0
但是不知道怎么去使用這個字段????
所以在加載這個配置文件的時候,不知道如何去判斷是否該解密,只能判斷哪些字段該解密(用戶名,密碼)
文章3中采用的重寫PropertyPlaceholderConfigurer類中的convertProperty函數,而在這這個函數傳入的
值時屬性名和值,通過屬性和我們需要解密的屬性名對比,若是則調用解密函數進行解密。這里的局限性就是
我們無法在最開始文件中去配置是否需要加解密。所以后面我又網上找到了一個類似的其它的實現方式如下:
spring在加載.propertoes配置文件時進行加密解密:參考文章4
在參考文章4中,通過重寫PropertyPlaceholderConfigurer父類的processProperties函數
可以對讀取的所有字段進行處理,這樣就解決了文章3中的問題,可以根據配置來決定是否采用
加密的方式。
在實現文章4中,發現還是需要在函數最后加上super.processProperties(beanFactoryToProcess, props);
不然在獲取到.properties文件后,在注入數據連接池時,不能通過類似於${}的方式來獲取前面讀取的.properties
中的值。