I am using Spring Boot 1.2.3 , and I would like to understand if it is possible to decrypt the property value before entering it into the bean annotated using @ConfigurationProperties .
Suppose the following is in the application.properties file:
appprops.encryptedProperty=ENC(ENCRYPTEDVALUE)
and an example application as follows:
package aaa.bb.ccc.propertyresearch; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import javax.annotation.PostConstruct; @SpringBootApplication @EnableConfigurationProperties(PropertyResearchApplication.ApplicationProperties.class) public class PropertyResearchApplication { public static void main(String[] args) { SpringApplication.run(PropertyResearchApplication.class, args); } @ConfigurationProperties("appprops") public static class ApplicationProperties { private String encryptedProperty; @PostConstruct public void postConstruct() throws Exception { System.out.println("ApplicationProperties --> appprops.encryptedProperty = " + encryptedProperty); } public String getEncryptedProperty() { return encryptedProperty; } public void setEncryptedProperty(String encryptedProperty) { this.encryptedProperty = encryptedProperty; } } }
In the past, I used a custom PropertySourcesPlaceholderConfigurer to achieve this, but this requires creating a structure such as:
@Component public class ApplicationProperties { @Value("${appprops.enrcyptedProperty}") private String encryptedProperty; @PostConstruct public void postConstruct() throws Exception { System.out.println("ApplicationProperties --> appprops.encryptedProperty = " + encryptedProperty); } public String getEncryptedProperty() { return encryptedProperty; } }
While this in itself is not bad, I would like to see if I can use @ConfigurationProperties subtleties with encrypted properties.
source share