在 scala 应用程序(播放框架)中使用 WSClient
Use WSClient in scala app (play framework)
我不确定是否缺少一些真正基本的东西,但我不知道如何使用 WSClient
。我已经看到所有的例子都说你需要将 WSClient 作为依赖项传递给 class,我已经完成了,但是当我 运行 程序时,我实际上传递给我的 class?
比如我的class签名是:
class myClassName(ws: WSClient)
但是当我实例化 class 时,我实际传递给它的是什么?我也很高兴忽略 Play!框架的东西,如果这样更容易,只需使用 SBT 来 运行 它(我更熟悉)。
不清楚哪里您可能使用了WSClient
,但建议您让Play框架'manage'成为客户端的实例。当您实例化您的应用程序时,它会被注入:
class Application @Inject() (ws: WSClient) extends Controller {
...
}
这意味着在 ...
中您可以访问 ws
作为值。您可以使用它来实例化 myClassName
:
class Application @Inject() (ws: WSClient) extends Controller {
val myclass = myClassName(ws) // passes the injected WSClient to myClassName
}
或者您可以编写一个 returns 和 WSClient
的函数,这样您的代码的某些其他区域可以调用您的 Application
对象以获得它的对象处理程序。
但关键是 Application
对象由于 注入 而获得该句柄,这是 @Inject
注释。
如果需要生成一个WSClient
,手动管理,有good instructions here。推荐的实现依赖于 Play!框架库,但不依赖于 Application
。
我不确定是否缺少一些真正基本的东西,但我不知道如何使用 WSClient
。我已经看到所有的例子都说你需要将 WSClient 作为依赖项传递给 class,我已经完成了,但是当我 运行 程序时,我实际上传递给我的 class?
比如我的class签名是:
class myClassName(ws: WSClient)
但是当我实例化 class 时,我实际传递给它的是什么?我也很高兴忽略 Play!框架的东西,如果这样更容易,只需使用 SBT 来 运行 它(我更熟悉)。
不清楚哪里您可能使用了WSClient
,但建议您让Play框架'manage'成为客户端的实例。当您实例化您的应用程序时,它会被注入:
class Application @Inject() (ws: WSClient) extends Controller {
...
}
这意味着在 ...
中您可以访问 ws
作为值。您可以使用它来实例化 myClassName
:
class Application @Inject() (ws: WSClient) extends Controller {
val myclass = myClassName(ws) // passes the injected WSClient to myClassName
}
或者您可以编写一个 returns 和 WSClient
的函数,这样您的代码的某些其他区域可以调用您的 Application
对象以获得它的对象处理程序。
但关键是 Application
对象由于 注入 而获得该句柄,这是 @Inject
注释。
如果需要生成一个WSClient
,手动管理,有good instructions here。推荐的实现依赖于 Play!框架库,但不依赖于 Application
。