【问题标题】:With Play framework what am I doing wrong in setting up my routers使用 Play 框架,我在设置路由器时做错了什么
【发布时间】:2018-11-30 13:21:05
【问题描述】:

我是 Play 和 Scala(2.6 版)的新手,我不知道如何让路由以简单的方式工作。将 2.6 文档中的示例拼凑在一起,我设法创建了一个自定义应用程序加载器,据我所知,这是执行 Evolutions 迁移所必需的。我发现的示例包括一个 var router = Routes.empty BuiltInComponentsFromContext 似乎需要使用路由器,但是这样做,按照我的做法,我的路由现在被破坏了,现在我得到的只是“Action Not找到”消息。

这是我的 application.conf:

play.application.loader=MyApplicationLoader
router = my.application.Router

这是应用程序加载器

import play.api.ApplicationLoader
import play.api.ApplicationLoader.Context
import play.api.BuiltInComponentsFromContext
import play.api.db.{Database, DBComponents, HikariCPComponents}
import play.api.db.evolutions.EvolutionsComponents
import play.api.routing.Router
import play.filters.HttpFiltersComponents
//import com.softwaremill.macwire._

class MyApplicationLoader extends ApplicationLoader {
  def load(context: Context) = {
    new MyComponents(context).application
  }
}

class MyComponents(cntx: Context)
  extends BuiltInComponentsFromContext(cntx)
    with DBComponents
    with EvolutionsComponents
    with HikariCPComponents
    with HttpFiltersComponents
{
  // this will actually run the database migrations on startup
  //lazy val router = Router.empty
  val router = Router.empty
  applicationEvolutions
}

在我看来是这样声明的:

val router = Router.empty

我实际上是在使我在我的 conf/routes 文件中声明的任何路由无效,我突然想到使用 Router.load 方法,但我找不到如何通过所需的示例方法的环境和配置值。假设我不想使用静态路由,我该怎么做?

【问题讨论】:

    标签: scala playframework playframework-evolutions


    【解决方案1】:

    假设您只是为了进化而使用编译时依赖注入(因为否则您之前会遇到同样的问题),答案是您不必这样做。 Evolutions 也适用于默认的动态依赖注入。 The part of the documentation 你可能基于你的假设实际上是说 if 你是 already 使用编译时依赖注入,这里是如何修改它以使进化工作。如果您查看EvolutionsModule 的源代码,您可能会看到ApplicationEvolutions 绑定了eagerly。这意味着ApplicationEvolutions 的实例将在应用程序初始化期间在应用程序启动时创建。在ApplicationEvolutions 本身的源代码中,您可以看到start() 是从构造函数中调用的。因此,如果您提供了配置,其余的应该可以自行运行。

    【讨论】:

    • @JohnL,如果有帮助,请随时将其标记为已接受的答案
    猜你喜欢
    • 2013-08-21
    • 2014-10-14
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多