我正在将现有应用从Play 2.3转换为Play 2.4。我试图摆脱对推荐的全局状态的依赖。在此部分中,我尝试使用现在提供的可注入WS.client
API替换对play.api.Play.current
和WSClient
的依赖关系。我正在使用Guice运行时注入。尝试以下代码/配置我得到NullPointerException
的{{1}}。
WebServiceProvider此类
wSClient:WSClient
application.conf
trait WebServiceProvider {
def getWS: WSClient
}
@Singleton
class DefaultWebServiceProvider @Inject ()(wSClient: WSClient) extends WebServiceProvider {
override def getWS = wSClient
}
MyGuiceModule.scala
play.modules.enabled += "MyGuiceModule"
如果我尝试将WSClient注入class MyGuiceModule() extends AbstractModule {
def configure: Unit = {
.....
bind(classOf[WebServiceProvider]).to(classOf[DefaultWebServiceProvider])
...
}
,它不会抛出NPE,但我不需要注入它。考虑到这一点,这也可能是相关的。
build.sbt
Controller
- 编辑 -
MyController.scala(它在这里工作,但我不想在这里注入)
...
routesGenerator := InjectedRoutesGenerator
WebServiceUser.scala
class MyController @Inject() (aService: AService, ws: WSClient) extends Controller