【问题标题】:Can't inject test Config into Play! 2.6 application created by Guice无法将测试配置注入 Play! 2.6 Guice 创建的应用
【发布时间】:2023-04-02 11:45:01
【问题描述】:

在 Play 中的 JUnit 测试中!在 IntelliJ 中执行的 2.6.25 应用程序,我正在尝试将测试配置:配置注入到应用程序中:由 Guice 创建的应用程序。但是 app:Application 不包含注入的配置。我做错了什么?

Config config = ConfigFactory.parseFile(new File("test.conf")).resolve();
// myapp.key resolved to "value"
String value = config.getString("myapp.key");
GuiceApplicationBuilder guiceApplicationBuilder = new GuiceApplicationBuilder();
guiceApplicationBuilder.withConfigLoader(environment -> ConfigFactory.load(config));
Application app = guiceApplicationBuilder.build();
// why myapp.key cannot be resolved? 
app.config().getString("myapp.key");

test.conf

myapp.key = value

也尝试过(没有成功):

guiceApplicationBuilder.loadConfig(config);
guiceApplicationBuilder.configure(config);

【问题讨论】:

    标签: java playframework guice playframework-2.6


    【解决方案1】:

    您实际上是在丢弃具有自定义配置加载器的应用程序构建器,因为构建器是不可变的数据结构。这样做:

    GuiceApplicationBuilder guiceApplicationBuilder = new GuiceApplicationBuilder()
      .withConfigLoader(environment -> ConfigFactory.load(config));
    

    或者干脆

    GuiceApplicationBuilder guiceApplicationBuilder = new GuiceApplicationBuilder()
      .configure(config);
    

    查看方法的签名时,您会发现它们都返回(一个新的!)GuiceApplicationBuilder

    【讨论】:

    • 哇,太明显了,非常感谢你,救了我的命!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多