扩展Playframework 2,因此可以在属性中使用加密的字符串

时间:2013-06-17 08:29:29

标签: java playframework-2.0 jasypt

我想将Jasypt添加到配置中。所以我想创建一个解密所需的application.conf条目的插件。

我创建了一个简单的插件,但是在调用onStart()时已经读取/执行了db配置。

我已经尝试过GlobalSettings onLoadConfig和beforeStart,两者都是在db配置之后。

我可以在哪里实现目标?

2 个答案:

答案 0 :(得分:2)

public class Global extends GlobalSettings {

// inject Jasypt StandardPBEStringEncryptor

@Override
public Configuration onLoadConfig(Configuration configuration, File file, ClassLoader classLoader) {
    final Config config = ConfigFactory.parseString(String.format("db.default.user=%s", callJasyptStringEncryptor()));

    return new Configuration(config.withFallback(configuration.getWrappedConfiguration().underlying()));
}}

答案 1 :(得分:2)

如果您使用scala,

override def onLoadConfig(config: Configuration, path: File, classloader: ClassLoader, mode: Mode.Mode): Configuration = {
        val parsed = ConfigFactory.parseString("db.default.user=\"JasyptText\"")
        new Configuration(parsed.withFallback(config.underlying))
}