2016-02-21 46 views
1

我想將Jasypt庫與彈簧屬性機制集成在一起。在彈簧上下文中更新屬性文件

示例教程在這裏:http://www.jasypt.org/spring31.html作者假定用戶手動執行加密,然後只在ENC()佔位符和配置文件之間傳遞加密值。這對我來說還不夠。

我想實現給定的情景:

  1. 把這一行到文件與性的判定:

    datasource.password=DEC(mysecretpassword) 
    
  2. 開始應用

  3. Spring框架將(使用jasypt)加密密碼並替換上述行:

    datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) 
    

在其他初創公司,spring只能解密加密值(例如,使用org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer)並且文件未被修改。

我想我需要創建自己的Spring的PropertyPlaceholderConfigurer,但我沒有看到修改文件的任何可能性。

我可以設置自定義org.springframework.util.PropertiesPersister我的PropertyPlaceholderConfigurer,好吧,但我仍然不知道我需要更新哪個文件(在我的春天@Configuration可能是許多屬性位置,某些屬性可以用另一個文件的值覆蓋等等。)。換句話說:我需要在屬性資源解析和合並之後注入我的(de | en)加密邏輯,但是在將值注入另一個bean之前。

感謝您對任何建議的提前解決方法。

+0

你嘗試[BeanFactoryPostProcessor時(https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiuyoXT9ojLAhUOco4KHa5PBIMQFggcMAA&url=https%3A%2F% 2Fdocs.spring.io%2Fspring%2Fdocs%2Fcurrent%2Fjavadoc-api%2Forg%2Fspringframework%2Fbeans%2Ffactory%2Fconfig%2FBeanFactoryPostProcessor.html&usg = AFQjCNHeAVk4k3q6y10UpFgyvsDQeTAc0Q&sig2 = KPFxtn8CI07GmFxroWOgaQ)允許您在任何bean創建之前執行自定義邏輯。 –

回答

0

一個老問題,我解決了我在jira中發現的解決方案,現在找不到它。無論如何,This是一個非常類似的解決方案,這樣你就可以「告訴」fw在加載你的dataSource bean之前加載你的propertiesPlaceHolder文件。