demo.CustomEncryptorDemoApplication Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jasypt-spring-boot-demo-custom-encryptor Show documentation
Show all versions of jasypt-spring-boot-demo-custom-encryptor Show documentation
Jasypt Spring Boot Simple Demo with Starter Ja and Custom Encryptor
package demo;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.core.env.Environment;
/**
* Sample Boot application that showcases easy integration of Jasypt encryption by
* simply adding {@literal @EnableEncryptableProperties} to any Configuration class.
* For decryption a password is required and is set through system properties in this example,
* but it could be passed command line argument too like this: --jasypt.encryptor.password=password
*
* @author Ulises Bocchio
*/
@SpringBootApplication
//Uncomment this if not using jasypt-spring-boot-starter (use jasypt-spring-boot) dependency in pom instead
public class CustomEncryptorDemoApplication implements CommandLineRunner {
private static final Logger LOG = LoggerFactory.getLogger(CustomEncryptorDemoApplication.class);
@Autowired
ApplicationContext appCtx;
public static void main(String[] args) {
//try commenting the following line out and run the app from the command line passing the password as
//a command line argument: java -jar target/jasypt-spring-boot-demo-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=password
//System.setProperty("jasypt.encryptor.password", "password");
//Enable proxy mode for intercepting encrypted properties
//System.setProperty("jasypt.encryptor.proxyPropertySources", "true");
new SpringApplicationBuilder().sources(CustomEncryptorDemoApplication.class).run(args);
}
@Bean(name="encryptorBean")
static public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("password");
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
@Override
public void run(String... args) throws Exception {
Environment environment = appCtx.getBean(Environment.class);
LOG.info("Environment's secret: {}", environment.getProperty("secret.property"));
LOG.info("Done!");
}
}