java - Play 2.5.3 : Using dependency injection to get configuration values

标签 java playframework dependency-injection playframework-2.5

我正在尝试将 Playframework 应用程序从 2.4 迁移到 2.5.3,但我无法从 application.conf 文件获取值:

application.conf 获取值之前,我所做的是:

Play.application().configuration().getString("label")

现在 由于 Play.application() 已弃用,我应该使用依赖注入(inject)。基于framework documentation我使用以下说明:

  1. 定义导入:导入javax.inject.*; import play.Configuration;
  2. 定义类属性:@Inject private Configuration配置;
  3. 在我的类上使用配置类属性

当我在 Controller Application.java 上按照这些说明操作时,它运行良好:

但是当我尝试在我的项目的其他类对象上使用它时,依赖注入(inject)不起作用,我总是得到一个 NullPointerException

谁能给我一个例子,说明如何使用依赖注入(inject)从 application.conf 中获取值?

我尝试使用 DI 的部分 java 代码:

import javax.inject.Inject;
import play.Configuration;
import play.Logger;

public class Zipper {

    @Inject private  Configuration configuration;

    public void unZip(String zipFilePath) {
        Logger.debug("Display : zipFilePath"+zipFilePath);
        Logger.debug("before call parameter from application.conf");
        Logger.debug("configuration.getString = "+configuration.getString("Unzipedfile.path"));
        Logger.debug("aftercall parameter from application.conf");
    }
}

而且我总是在 configuration.getString("Unzipedfile.path")

行得到一个空指针异常

最佳答案

我认为你可以像这样初始化配置:

private  Configuration configuration = Play.current().injector().instanceOf(Configuration .class);

因此,您的 Zipper 将是:

import javax.inject.Inject;
import play.Configuration;
import play.Logger;

public class Zipper {

    private  Configuration configuration = Play.current().injector().instanceOf(Configuration .class);

    public void unZip(String zipFilePath) {
        Logger.debug("Display : zipFilePath"+zipFilePath);
        Logger.debug("before call parameter from application.conf");
        Logger.debug("configuration.getString = "+configuration.getString("Unzipedfile.path"));
        Logger.debug("aftercall parameter from application.conf");
    }
}

关于java - Play 2.5.3 : Using dependency injection to get configuration values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36972305/

相关文章:

java - Maven 未添加 "Authorization" header

java - 将 stripe 与 android 应用程序集成

scala - Atlassian Bamboo 5.x 是否与 Play Framework 2.x 兼容

内联时未定义javascript变量

python - 为什么 IoC/DI 在 Python 中不常见?

java - 为什么Java接口(interface)不能通过不太具体的功能来实现

playframework - 玩!和模型验证

javascript - Angular2 中没有服务提供者错误,为什么我需要将其注入(inject)到它的父组件中?

angularjs - 注入(inject)的依赖项在单元测试中未定义

java - 通过 JDBC 使用数据库时如何处理夏令时?