2

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

1) 杰西普

<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");
}

但是,如何转换加密:字符串加密部分。

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 注释中提及配置文件?

4

1 回答 1

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 一无所知,但我看到了他们的包名称和文档,一切都在 Spring 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 {
...
}
于 2014-04-23T06:38:26.400 回答