如何创建在Play 2.4中执行Web服务调用的应用程序范围的Scala函数?

时间:2015-10-12 17:19:33

标签: web-services scala playframework

我想创建一个LinkedinApi类,其中包含对Linkedin服务器执行Web服务请求的函数。这些功能需要可以从Play应用程序代码的任何位置访问。我过去编写此类API类的最简单方法是将它们声明为object。然后可以从任何地方获得LinkedinApi.myPublicFunction()

问题在于,我不知道如何将LinkedinApi课程声明为object。它将使用Play 2.4的Web服务,这是通过在类声明中添加@Inject()(ws: WSClient)来完成的。类似于object LinkedinApi @Inject()(ws: WSClient) extends Controller

问题是上面的行没有编译。 @Inject似乎只能与class声明一起使用,而不能与object一起使用。

那么如何创建执行Web服务调用的应用程序范围的API函数呢?

1 个答案:

答案 0 :(得分:3)

我认为您应该将您的LinkedinApi定义为服务并在需要时注入:

@Singleton
class LinkedinApi @Inject()(ws: WSClient) {
   //...
   //linkedin stuff
   //...
}

并注入:

@Singleton
class SomeController @Inject()(linkedinApi:LinkedinApi) {
    //...
}