我想创建一个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函数呢?
答案 0 :(得分:3)
我认为您应该将您的LinkedinApi定义为服务并在需要时注入:
@Singleton
class LinkedinApi @Inject()(ws: WSClient) {
//...
//linkedin stuff
//...
}
并注入:
@Singleton
class SomeController @Inject()(linkedinApi:LinkedinApi) {
//...
}