【发布时间】:2016-08-26 14:52:43
【问题描述】:
我正在尝试将 Playframework 应用程序从 2.4 迁移到 2.5.3,但我无法从 application.conf 文件中获取值:
之前从application.conf获取值我所做的是:
Play.application().configuration().getString("label")
现在因为 Play.application() 已被弃用,我应该使用依赖注入。基于framework documentation,我使用以下说明:
-
定义导入:导入
javax.inject.*; import play.Configuration; -
定义类属性:
@Inject private Configuration configuration; - 在我的类上使用配置类属性
当我在控制器Application.java 上按照这些说明操作时,它运行良好:
但是当我尝试在项目中的其他类对象上使用它时,依赖注入不起作用,我总是得到NullPointerException。
谁能给我一个关于如何使用依赖注入从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")这一行
【问题讨论】:
-
发布无效的代码。
-
我已按要求进行了更新。
相同类型的代码在我的控制器 application.java 上运行,但从未在我的其他 java 类上运行。 -
你不能注入到任意的类中,这些类不是由 DI 自己创建的或者没有被引入到 Guice 上下文中。如果您的类 Zipper 是由 Guice 创建的或在某处注入的,那么您将拥有要注入的上下文。见stackoverflow.com/a/32896354/1956540
-
是的,你完全正确,这是我的错误,我在下面写了一些细节
标签: java playframework dependency-injection playframework-2.5