春天4 javaconfig为jasypt和配置文件

时间:2014-04-23 05:17:18

标签: spring jasypt spring-java-config

如何在Spring 4中将以下2 xml配置转换为java Config

1)jasypt

<encryption:encryptor-config id="eConf" password-env-name="APP_ENCRYPTION_PASSWORD" algorithm="PBEWithMD5AndDES" />

<encryption:string-encryptor id="stringEnc" config-bean="eConf" />

加密的第一部分(encryption:encryptor-config)可以像这样转换:

@Bean
public EnvironmentStringPBEConfig environmentVariablesConfiguration() {

    EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
    config.setAlgorithm("PBEWithMD5AndDES");
    config.setPasswordEnvName("APP_ENCRYPTION_PASSWORD");
}

但是,如何转换加密:string-encryptor part。

2)个人资料

    <beans profile="dev">
        <util:properties id="myProps" location="classpath:dev.properties" />
    </beans>

    <beans profile="prod">
        <util:properties id="myProps" location="classpath:prod.properties" />
    </beans>

@PropertySource("classpath:prod.properties")用于util:properties,但如何在PropertySource注释中提及个人资料?

1 个答案:

答案 0 :(得分:7)

根据jasypt库(EncryptionNamespaceHandlerEncryptorFactoryBean)的源代码以及PooledPBEStringEncryptor的API来判断我假设你可以开始尝试这样的事情:

@Bean
public EnvironmentStringPBEConfig environmentVariablesConfiguration() {
   EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
   config.setAlgorithm("PBEWithMD5AndDES");
   config.setPasswordEnvName("APP_ENCRYPTION_PASSWORD");
   return config;
}
@Bean
public PooledPBEStringEncryptor stringEncryptor() {
   PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
   encryptor.setConfig(environmentVariablesConfiguration());
   return encryptor;
}

但需要注意的是:我对Jasypt一无所知,但我看到他们的包名和文档,一切都在春季2,3和3.1左右。没有关于Spring 4的内容。所以,我不能说它不会起作用,但是如果事情看起来应该有效,那就要记住了,但是他们没有。

至于@PropertySource我觉得你需要围绕这些方面的东西:

@Configuration
@Profile(value="prod")
@PropertySource("classpath:prod.properties")
public class ProdPlaceholderConfig {
...
}

@Configuration
@Profile(value="dev")
@PropertySource("classpath:dev.properties")
public class DevPlaceholderConfig {
...
}