在Play 2.5.X中,我们需要使用依赖注入。以下代码是play-documentation中的一个示例:
class HomeController @Inject() (configuration: play.api.Configuration) extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
如果我在getXXX
中定义了一些额外的帮助方法HomeController
并需要从其他地方访问它,我该如何访问此方法?
我真正感兴趣的是如何创建HomeController
的实例,以便我可以使用homeControllerInstance.getXXX
。
如果我尝试创建如下的实例:
val homeControllerInstance = new HomeController()
我收到错误:
Compilation error[not enough arguments for constructor HomeController: (configuration: play.api.Configuration)HomeController
我尝试将HomeController
类声明更改为:
class HomeController @Inject(configuration: play.api.Configuration) extends Controller
但是这给了我错误:
classfile annotation arguments have to be supplied as named arguments
有人可以解释一下,我该如何解决这个问题?
答案 0 :(得分:0)
如果您想使用谷歌果汁从getXXX
课程中使用HomeController
课程的Xyz
方法,请尝试此操作
import com.google.inject.Inject
class Xyz @Inject()(homeCon: HomeController) {
homeCon.getXXX
}
虽然我不确定你的实际问题是什么,但希望这有帮助。
答案 1 :(得分:0)
您应该使用
实例化该类play.api.Play.current.injector.instanceOf(classOf[UID])
答案 2 :(得分:0)
有时您需要在@Inject关键字之后添加一个新行,这样:
class HomeController @Inject(a :IWantThisInjected)
(configuration: play.api.Configuration)
失败并出现该错误,但将第一组参数移动到下一行可以修复它:
class HomeController @Inject
(a :IWantThisInjected)
(configuration: play.api.Configuration)