gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:32 25 4
gpt4 key购买 nike

我正在尝试将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com