我想将 Jasypt 库与 spring 属性机制集成。
在此处的示例教程中:http://www.jasypt.org/spring31.html作者假设用户手动执行加密,然后仅将 ENC( ) 占位符之间的加密值传递到配置文件。这对我来说还不够。
我想实现给定的场景:
将此行放入具有属性的文件中:
datasource.password=DEC(mysecretpassword)
启动应用程序
Spring 框架将加密密码(使用 jasypt)并将上面的行替换为:
datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)
在进一步启动时,spring仅解密加密值(例如使用org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer
)并且文件不会被修改。
我想我需要创建自己的 Spring 的 PropertyPlaceholderConfigurer
但我看不到任何修改文件的可能性。
我可以将自定义org.springframework.util.PropertiesPersister
设置为我的PropertyPlaceholderConfigurer
,好吧,但我仍然不知道我需要更新哪个文件(在我的spring @Configuration中可能有许多属性位置,某些属性可以用另一个文件等中的值覆盖)。
换句话说:我需要在属性资源解析和合并之后、但在将值注入(inject)到另一个 bean 之前注入(inject)我的(解密)加密逻辑。
感谢您提前提供有关如何解决此问题的任何建议。
最佳答案
我用在 jira 中找到的解决方案解决了一个老问题,但现在找不到它。无论如何,This是一个非常相似的解决方案,通过这种方式,您可以“告诉”固件在加载 dataSource beans 之前加载您的propertiesPlaceHolder 文件。
关于java - 在 spring 上下文加载期间更新属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533873/