我正在尝试将 Playframework 应用程序从 2.4 迁移到 2.5.3,但我无法从 application.conf
文件获取值:
在从application.conf
获取值之前,我所做的是:
Play.application().configuration().getString("label")
现在 由于 Play.application()
已弃用,我应该使用依赖注入(inject)。基于framework documentation我使用以下说明:
- 定义导入:导入
javax.inject.*; import play.Configuration;
- 定义类属性:
@Inject private Configuration配置;
- 在我的类上使用配置类属性
当我在 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/