【问题标题】:Use WSClient in scala app (play framework)在 Scala 应用程序中使用 WSClient(播放框架)
【发布时间】:2016-08-24 10:30:00
【问题描述】:

我不确定我是否缺少一些真正基本的东西,但我不知道如何使用WSClient。我已经看到所有示例都说您需要将 WSClient 作为依赖项传递给一个类,我已经完成了,但是当我运行程序时,我实际上将什么传递给我的类?

例如,我的班级签名是:

class myClassName(ws: WSClient)

但是当我实例化类时,我实际上传递给它什么?我也很乐意忽略 Play!框架的东西,如果这使它更容易,只需使用 SBT 来运行它(我更熟悉)。

【问题讨论】:

    标签: scala playframework sbt ws-client


    【解决方案1】:

    不清楚在哪里您可能在使用WSClient,但建议您让 Play 框架“管理”客户端实例。当您实例化您的应用程序时,它会被注入:

    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
    }
    

    或者您可以编写一个返回WSClient 的函数,这样您的代码的其他一些区域就可以调用您的Application 对象来获取它的对象处理程序。

    但关键是Application对象因为注入而得到那个句柄,也就是@Inject注解。

    如果需要生成WSClient并手动管理,有good instructions here。推荐的实现依赖于 Play!框架库,但不依赖于Application

    【讨论】:

    • 你将如何运行这个应用程序?我正在使用 Intellij
    • 因为我的目标是拥有一些我可以点击运行并使用 Intellij 运行整个东西的东西,我不需要所有应用程序的东西。这只是主应用程序的一个附属类。
    • 您是否使用 SBT 编译和运行您的应用程序? SBT 有一个 IntelliJ 插件,可用于启动应用程序。如果不知道更多,我不能给你很多指导。
    • 是的,我正在使用 SBT,但我不想制作完整的应用程序。我只想能够单独运行这个类。这个项目已经有一个不同的应用程序。或者我可以在一个项目中拥有多个应用程序吗?
    • @annedroid 更新了我的答案;最后一段。让我知道这是否有帮助!
    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2016-06-12
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多