我目前在我的应用程序中使用jasypt,它的设置方式非常有用。
但是,该密码在类中设置为实例变量,从而使其可用于线程转储,并且通常存在于会话中。我只想在需要时提供密码。
为此,我认为扩展EncryptablePropertyPlaceholderConfigurer以编程方式访问属性是最好的选择。但是,该类是最终类,不能子类化。在这种情况下,我将如何以编程方式实现对属性的访问?
最佳答案
如果您要为EncryptablePropertyPlaceholderConfigurer提供加密器,我建议采用以下解决方案。
将密码提供给加密器配置,而不是在类中设置为实例变量。
<spring:bean id="propertyPlaceholderConfigurer"
class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<spring:constructor-arg ref="configurationEncryptor" />
<spring:property name="location" value="myapp.properties" />
</spring:bean>
<spring:bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<spring:property name="config" ref="environmentVariablesConfiguration" />
</spring:bean>
<spring:bean id="environmentVariablesConfiguration"
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<spring:property name="algorithm" value="PBEWithMD5AndDES" />
<spring:property name="passwordEnvName" value="JASYPT_PSWD_ENV" />
</spring:bean>
这样,密码仅可用于加密器,并且仅在需要时使用。
希望这可以帮助。
关于java - 在Jasypt中扩展EncryptablePropertyPlaceholderConfigurer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29903502/