2016-09-29 93 views
0

我正在将播放框架应用程序从2.4.6升级到2.5.x. 有几次我调用属于某个对象的帮助器方法。这些辅助方法使用play的内置类(例如play.api.Play.current.configuration.underlying.getString)来完成作业。播放2.5.X依赖项注入

我得到以下警告:“在对象播放方法目前已被弃用:这是一个静态的参考应用,使用DI代替

如果我面对类方法这个问题,那么我就可以使用依赖注入。如何处理方法属于对象的情况,并警告我使用DI?

+0

如果您使用依赖注入你可以改变你的对象类,它会做的工作。与@Singleton注释它 – stsatlantis

+0

这种方法的问题是如果我想使用辅助方法(改变对象类@Singleton注解之后),发挥出如下错误: 对象ClientHandler的是不包控制器 [错误的构件]注意:ClientHandler类存在,但它没有伴随对象。 [错误] controllers.ClientHandler.getClientUrl – Shailesh

回答

2

Play Framework通常会提供一个您可以注入的类,而不是使用旧的静态引用。

例如,下面就意味着你可以停止使用Play.current.configurationDB

import javax.inject.Inject 
import play.api.db.Database 
import play.api.Configuration 

class MyClass @Inject() (configuration: Configuration, db: Database) { 
    ... 
} 
+0

我使用的对象不是类。 – Shailesh

+0

这就是整个观点。单身'对象'已弃用。注入的“配置”实例应该与单例“对象”相同。为了使用这个,你应该改变你自己的singleton''object''到'class'。然后你可以在你的控制器中注入helper'class'(或者你可能需要的其他地方) – irundaia

+0

同意,但是如果我用@Singleton注解改变对象类,play不允许我用className调用helper方法。 helperMethod()。 – Shailesh