gpt4 book ai didi

scala - 为什么我们需要隐式应用程序

转载 作者:行者123 更新时间:2023-12-02 04:50:46 25 4
gpt4 key购买 nike

我正在使用 Play Framework 和 Scala 创建一个应用程序,并且该应用程序使用隐式

play.api.Application



为什么我们需要在我们的范围内使用这个应用程序?

提前致谢

最佳答案

这是开发人员做出的架构选择。框架的某些组件需要引用 Application (通常是当前运行的 Application )。 Cache、DB、Messages (i18n)、Evolutions 和 WS API 是首先想到的。
Application trait 是运行中的 Play 应用程序不可或缺的一部分。它用于保存应用程序配置、路由、对插件的引用、GlobalSettings对象、应用程序日志记录等。

例如,当我打电话时:

DB.withConnection { implicit c =>
...
}

我需要 play.api.Play.current在范围内(当前运行的 Application )。为什么?它知道哪个 DBApi已加载,以及其他数据库配置选项(如果需要)。

同样,当我调用 play.api.cache.Cache.set(...) ,我需要一个隐含的 Application为了让缓存 API 确定加载了哪些缓存插件,以及使用哪一个。

为什么这些 API 不都引用当前正在运行的 Application ?打败我,真的。硬编码 Application 肯定会损害模块化。到处引用。我想您可能可以运行多个应用程序进行测试等。我记得读过 play.api.Play.current可能会在 future 的版本中消失,以消除保持全局状态的需要,但我找不到源。

关于scala - 为什么我们需要隐式应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28862473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com