春天4 javaconfig为jasypt和配置文件

Vik*_*rma 2 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" />
Run Code Online (Sandbox Code Playgroud)

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

@Bean
public EnvironmentStringPBEConfig environmentVariablesConfiguration() {

    EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
    config.setAlgorithm("PBEWithMD5AndDES");
    config.setPasswordEnvName("APP_ENCRYPTION_PASSWORD");
}
Run Code Online (Sandbox Code Playgroud)

但是,如何转换加密:string-encryptor部分.

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>
Run Code Online (Sandbox Code Playgroud)

@PropertySource("classpath:prod.properties")用于util:properties,但如何在PropertySource注释中提到配置文件?

And*_*fan 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;
}
Run Code Online (Sandbox Code Playgroud)

但需要注意的是:我对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 {
...
}
Run Code Online (Sandbox Code Playgroud)