如何将 Jasypt 与配置为 Java 的 Spring 4 应用程序集成?
How to integrate Jasypt with a Spring 4 app with Java configuration?
我想在我的 Spring 4 应用程序(没有 Spring 引导)中添加使用 Jasypt 的属性文件加密。配置在Java.
我找到了 Spring 3.1 XML 配置和 Spring 引导的解决方案,但没有 Spring4 Java 配置。
我尝试按照 3.1 (http://www.jasypt.org/spring31.html) 文档中的建议以 Java 配置方式声明它,但它没有加载属性。
@Bean
public EncryptablePropertyPlaceholderConfigurer propertyPlaceholderConfigurer() {
EncryptablePropertyPlaceholderConfigurer propertyPlaceholderConfigurer = new EncryptablePropertyPlaceholderConfigurer(new OurCustomEncryptor());
propertyPlaceholderConfigurer.setLocations(
new ClassPathResource("config-encrypted.properties")
);
return propertyPlaceholderConfigurer;
}
有什么想法吗?
实际上问题是双重的:
首先,我在配置中的其他地方声明了另一个 PropertyPlaceholderConfigurer
,它似乎覆盖了这个。
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
return new PropertySourcesPlaceholderConfigurer();
}
所以摆脱它让我走得更远。
其次,它适用于使用 @Value
注释注入的属性,但在尝试通过 Spring Environment#getProperty
方法检索值时无效。这是因为如 this answer 中所述,PropertyPlaceholderConfigurer
仅在创建 bean 期间有效。
我想在我的 Spring 4 应用程序(没有 Spring 引导)中添加使用 Jasypt 的属性文件加密。配置在Java.
我找到了 Spring 3.1 XML 配置和 Spring 引导的解决方案,但没有 Spring4 Java 配置。
我尝试按照 3.1 (http://www.jasypt.org/spring31.html) 文档中的建议以 Java 配置方式声明它,但它没有加载属性。
@Bean
public EncryptablePropertyPlaceholderConfigurer propertyPlaceholderConfigurer() {
EncryptablePropertyPlaceholderConfigurer propertyPlaceholderConfigurer = new EncryptablePropertyPlaceholderConfigurer(new OurCustomEncryptor());
propertyPlaceholderConfigurer.setLocations(
new ClassPathResource("config-encrypted.properties")
);
return propertyPlaceholderConfigurer;
}
有什么想法吗?
实际上问题是双重的:
首先,我在配置中的其他地方声明了另一个 PropertyPlaceholderConfigurer
,它似乎覆盖了这个。
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
return new PropertySourcesPlaceholderConfigurer();
}
所以摆脱它让我走得更远。
其次,它适用于使用 @Value
注释注入的属性,但在尝试通过 Spring Environment#getProperty
方法检索值时无效。这是因为如 this answer 中所述,PropertyPlaceholderConfigurer
仅在创建 bean 期间有效。