我试图将一个Playframework应用程序从2.4迁移到2.5.3,并且我有问题从application.conf文件获取值:
之前要从application.conf获取一个值我所做的是:
Play.application().configuration().getString("label")
现在,由于Play.application()已被弃用,我应该使用依赖注入.根据framework documentation我使用以下说明:
>定义import:import javax.inject.*;导入play.Configuration;
>定义类属性:@Inject private配置配置;
>使用我的类上的配置类属性
当我按照我的控制器Application.java上的这些说明它是正常工作:
但是当我尝试从我的项目的另一个类对象使用它时,依赖注入不起作用,我总是得到一个NullPointerException.
有人可以给我一个关于如何使用依赖注入从application.conf获取值的示例?
我的java代码的一部分我试图用DI:
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"); } }
并且我总是得到一个空指针异常,在与configure.getString(“Unzipedfile.path”)的行上
解决方法
我认为你可以这样初始化配置:
private Configuration configuration = Play.current().injector().instanceOf(Configuration .class);
所以你的拉链将是:
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"); } }