如何在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注释中提及个人资料?
答案 0 :(得分:7)
根据jasypt库(EncryptionNamespaceHandler和EncryptorFactoryBean)的源代码以及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 {
...
}