在spring上下文加载期间更新属性文件

时间:2016-02-21 08:19:00

标签: java spring jasypt property-placeholder

我想将Jasypt库与spring属性机制集成。

在此示例教程中:http://www.jasypt.org/spring31.html作者假定用户手动执行加密,然后仅将ENC()占位符之间的加密值传递给配置文件。这对我来说还不够。

我想实现给定的方案:

  1. 将此行放入文件中:

    datasource.password=DEC(mysecretpassword)
    
  2. 启动申请

  3. Spring Framework将加密密码(使用jasypt)并将以上行替换为:

    datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)
    
  4. 在进一步启动时,spring仅解密加密值(例如使用org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer)并且文件未被修改。

    我想我需要创建自己的Spring PropertyPlaceholderConfigurer,但我认为没有任何修改文件的可能性。

    我可以将自定义org.springframework.util.PropertiesPersister设置为我的PropertyPlaceholderConfigurer,好吧,但我仍然不知道我需要更新哪个文件(在我的春天@Configuration可能有很多属性位置,有些属性可以用另一个文件等的值覆盖。)。

    换句话说:我需要在属性资源解析和合并之后注入我的(de | en)加密逻辑,但是在将值注入另一个bean之前。

    感谢您提前告知如何解决此问题。

1 个答案:

答案 0 :(得分:0)

我用jira中找到的解决方案解决了一个老问题,我现在无法找到它。无论如何,This是一个非常类似的解决方案,通过这种方式你可以告诉"在加载dataSource bean之前加载propertiesPlaceHolder文件的fw。