展EncryptablePropertyPlaceholderC

展EncryptablePropertyPlaceholderC

我目前在我的应用程序中使用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/

10-09 13:40